收缩数据库日志

Posted lonelyxmas

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了收缩数据库日志相关的知识,希望对你有一定的参考价值。

原文:收缩数据库日志

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来处理某些非常紧迫的情况。为了尽量确保你的数据库的一致性,你应将其作为“最后一招”。

以上是关于收缩数据库日志的主要内容,如果未能解决你的问题,请参考以下文章

怎样收缩SqlServer2005的日志文件

SQL数据库中日志收缩、截断等等是啥

收缩数据库日志

sql server怎么收缩日志

SQL server2008无法收缩日志

收缩数据库日志