新数据库必须要做一次完全备份之后才能保留日志,在做备份之前还原模式就是简单,不管你选什么!

转自:http://blog.csdn.net/jadeite/article/details/1639356

  

         不过在培训的过程中倒是有个挺有意思的插曲,就是关于SQL Server 对日志的管理。

        以前就知道SQL Server 一共有三种还原模式,分别是完全,大容量和简单。其中完全是保存所有事务日志,大容量是在做大容量插入的时候不记录日志 比如执行 bcp 什么的。这两种日志类型都必须备份后才能截断。 简单模式就是不保存事务日志,每个检查点后都将日志截断。

         在课堂上老师带着做实验,用系统的性能监视器监视数据库日志文件的使用情况。把数据库日志文件的自动增长属性去掉,然后写一个脚本往表里插数,观察日志的占用情况

        执行以下脚本:

CREATE DATABASE [LogTest] ON  PRIMARY

( NAME = N'LogTest', FILENAME = N'C:/Program Files/Microsoft SQL Server/MSSQL.1/MSSQL/DATA/LogTestDB.mdf' ,

      SIZE = 18432KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )

 LOG ON

( NAME = N'LogTest_log', FILENAME = N'C:/Program Files/Microsoft SQL Server/MSSQL.1/MSSQL/DATA/LogTest_log.ldf' ,

      SIZE = 10240KB , MAXSIZE = 2048GB , FILEGROWTH = 0)

GO

 

USE LogTest

 

CREATE TABLE LogTestTable

(

LT_ID int null,

LT_Decription nvarchar(50) null

)

GO

 

然后打开性能监视器,监视日志占用情况

 

Performance object :  SQL Server: Database

Counters from list:  Log file(s) Size (KB) &  Log File(s) Used Size(KB)

Instances from list: LogTest

执行

Declare @i int

SET @i = 1

WHILE 1=1

BEGIN

      INSERT INTO LogTestTable VALUES (@i,'LogTest'+cast(@i as nvarchar(50)))

END

 

居然发现曲线有上有下

 

我的故障还原模式可是选的完全啊! SQL Server 居然自动就给截断了,比较可怕的事情阿!基本上完全颠覆了我以前的理解。

 

不知道日志都删了靠啥还原数据。

 

后来问了微软的牛人才知道。新数据库必须要做一次完全备份之后才能保留日志,在做备份之前还原模式就是简单,不管你选什么!

 

不得不承认细节的人性化设计啊!设计者本来完全可以就根据你的选择保留日志,不管有没有用。但微软就把这一点细节修改了,因为考虑到如果不做完全备份的话保留事务日志是没有意义的。

 

不得不佩服!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值