SQL Server为啥日志文件越来越大

Posted

tags:

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

数据其实是保存在log里的,你看到的那个db文件其实只是个快照,用来提高速度的。你把db删掉了你还能从log里面还原出完整的db,你把log删掉了,以后硬盘断电,db整个毁。

有了log你还可以吧db回滚到过去的任何一秒钟,就跟苹果的time machine具有一样的功能

当然了,也并不是所有人都需要回滚到任何一秒钟的,因此你可以使用一些命令,让log把当前的db整个写进去,然后删掉过去所有的log,以后你就只能回滚到这里了。

综上所述,log肯定是要越来越大的,为了回滚。
参考技术A 数据库的事务日志,是为了在出现故障时,恢复数据库用的。
所以应该制定备份策略,备份数据库和日志;备份好日志后,就可以收缩日志文件了。
如果是非生产的数据库,可以考虑将数据库故障恢复模式调整成简单模型。
参考技术B 如果是完整恢复模式,你是不是好久没有做事务日志备份了?

为SQL Server数据库清空日志并收缩数据库

原文:为SQL Server数据库清空日志并收缩数据库

在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;

达叔傻乐 (darwin.zuo@163.com)

以上是关于SQL Server为啥日志文件越来越大的主要内容,如果未能解决你的问题,请参考以下文章

sql server 2008错误日志如何优化自动删除

为SQL Server数据库清空日志并收缩数据库

sql server 2008 r2 日志文件过大怎么清除

SQL Server 2008 收缩日志 清空删除大日志文件

SQL Server 2008 收缩日志 清空删除大日志文件

SQL SERVER 2000数据库日志文件过大如何解决