收缩数据库日志

USE DATABASENAME;
GO
--不得已时再用这个
DUMP TRANSACTION DATABASENAME WITH NO_LOG


--先截断事务日志
BACKUP LOG DATABASENAME TRUNCATE_ONLY|WITH NO_LOG|TO DISK='文件路径'


--再收缩日志
DBCC SHRINKFILE (2, 7)|SHRINKFILE (DATABASENAME);
--要收缩的文件的fileid,对应sysfiles中的fileid。 
--收缩文件到7 MB大小,如果没有指定,DBCC SHRINKFILE 将文件大小减少到初始默认文件大小
GO

注意:收缩完日志后建议。立即进行完整备份。因为日志被截断,很难恢复之前的数据。

  在命令参考手册中的dump transaction with no_log条目下,有一条警告信息告诉你,你应该把这条命令作为没有其它办法时的最后一招才使用它。
若你在对数据库的修改发生时使用dump transaction with no_log,你就会冒整个数据库崩溃的风险。在多数情况下,它们被反映成813或605错误。为了在数据库被修改时,删除transaction log中的不活跃部分可使用dump transaction with trancate_only。这条命令写进transaction log时,并且它还做不要的并发性检查。这两条命令都有与其相关的警告,在命令参考手册中会看到这些警告。请确保在使用其中任一条命令以前,你已理解这些警告和指示。 Syase提供dump transaction with no_log来处理某些非常紧迫的情况。为了尽量确保你的数据库的一致性,你应将其作为“最后一招”。

posted @ 2013-05-21 22:47  StupidsCat  阅读(1056)  评论(0编辑  收藏  举报