新数据库必须要做一次完全备份之后才能保留日志,在做备份之前还原模式就是简单,不管你选什么!
2011-11-28 10:47
513 查看
在完全恢复模式下事务日志居然会被自动截断
转自: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 居然自动就给截断了,比较可怕的事情阿!基本上完全颠覆了我以前的理解。
不知道日志都删了靠啥还原数据。
后来问了微软的牛人才知道。新数据库必须要做一次完全备份之后才能保留日志,在做备份之前还原模式就是简单,不管你选什么!
不得不承认细节的人性化设计啊!设计者本来完全可以就根据你的选择保留日志,不管有没有用。但微软就把这一点细节修改了,因为考虑到如果不做完全备份的话保留事务日志是没有意义的。
不得不佩服!
相关文章推荐
- 崩溃了数据库先要备份日志(选择截断)然后变为简单模式后,收缩日志文件就可以了
- 数据库备份还原,日志清理代码
- 请问数据库的完全备份包括对事务日志的备份吗?还是只包含数据文件的备份??差异备份包括对事务日志的备份吗?
- sql server 2005 或2008 数据库备份/还原问题,未备份数据库的日志尾部?
- SQL Server 恢复模式、备份方式和还原方式之间的简单关系
- 如何从数据库的完整日志模式还原误删除的数据
- SQL Server Reporting Service 报错:报表服务器无法解密用于访问报表服务器数据库中的敏感数据或加密数据的对称密钥,必须还原备份密钥或删除所有加密的内容。
- SQL Server 备份和还原全攻略, 完全备份,差异备份,增量备份,事务日志备份
- mssql 数据库与日志的备份 与还原
- 收缩日志文件错误:对数据库的备份、文件操作(如 ALTER DATABASE ADD FILE)以及加密更改必须序列化
- mysql 利用binlog增量备份,还原实例(日志备份数据库)
- mysql备份和还原数据库及慢查询日志使用
- 报表服务器无法解密用于访问报表服务器数据库中的敏感数据或加密数据的对称密钥。必须还原备份密钥或删除所有加密的内容。
- mysql 直接从date 文件夹备份表,还原数据库之后提示 table doesn`t exist的原因和解决方法
- 报表服务器无法解密用于访问报表服务器数据库中的敏感数据或加密数据的对称密钥。必须还原备份密钥或删除所有加密的内容。
- SQL Server Reporting Service 报错:报表服务器无法解密用于访问报表服务器数据库中的敏感数据或加密数据的对称密钥,必须还原备份密钥或删除所有加密的内容。
- svn update -r m path 代码还原到某个版本(这样之前的log日志也就没了,也就是清空log日志)
- mysql 直接从date 文件夹备份表,还原数据库之后提示 table doesn`t exist的原因和解决方法
- NOARCHIVELOG模式下冷备份还原数据库!
- 命令行模式下备份、还原 MySQL 数据库的语句小结