在SQL SERVER运行一段时间后,数据库的日志文件越来越大越来越大,有的时候我们为了减少日志文件的大小腾出存储空间,就要截断事务日志并收缩数据库,这样LOG文件占用的磁盘空间就被释放了。
要注意以下的任何一种操作都会使你丧失相应数据库的事务日志内容!操作之前一定要先备份数据库!!
对于SQL Server 2012之前的版本可以这样干:
--达叔傻乐 (darwin.zuo@163.com)
--把打开你的查询分析器或者SSMS(SQL Server Management Studio)新建个查询,
--把这里所有的查询代码都复制到新建的空白查询里,
--然后把下面第一行代码中的DBNAME改成你的数据库的名字再执行该查询就可以了
DECLARE @dbName NVARCHAR(MAX) = 'DBNAME';
DECLARE @cmd4 NVARCHAR(MAX) = 'DUMP TRANSACTION ' + @dbName + ' WITH NO_LOG;';
DECLARE @cmd5 NVARCHAR(MAX) = 'BACKUP LOG ' + @dbName + ' WITH NO_LOG;';
DECLARE @cmd6 NVARCHAR(MAX) = 'DBCC SHRINKDATABASE (' + @dbName + ' ,0);';
EXEC sys.sp_executesql @cmd4;
EXEC sys.sp_executesql @cmd5;
EXEC sys.sp_executesql @cmd6;
对于SQL Server 2012及更新版本要这么干:
--达叔傻乐 (darwin.zuo@163.com)
--把打开你的查询分析器或者SSMS(SQL Server Management Studio)新建个查询,
--把这里所有的查询代码都复制到新建的空白查询里,
--然后把下面第一行代码中的DBNAME改成你的数据库的名字再执行该查询就可以了
DECLARE @dbName NVARCHAR(MAX) = 'DBNAME';
DECLARE @cmd1 NVARCHAR(MAX) = 'ALTER DATABASE ' + @dbName + ' SET RECOVERY SIMPLE;';
DECLARE @cmd2 NVARCHAR(MAX) = 'ALTER DATABASE ' + @dbName + ' SET RECOVERY FULL;';
DECLARE @cmd3 NVARCHAR(MAX) = 'DBCC SHRINKDATABASE (' + @dbName + ' ,0);';
EXEC sys.sp_executesql @cmd1;
EXEC sys.sp_executesql @cmd2;
EXEC sys.sp_executesql @cmd3;