我每天在我的表上测试批量插入的正在进行的项目,批量文件每天大约有1200000条记录。 事务日志不断增加。我忘记了一次9GB的事务日志,还没有备份。 像这样收缩事务日志是明智的做法。 可以在完整备份后收缩日志,还是需要单独备份日志? 感谢Sql服务器收缩事务日志
回答
这是莫大的联系,这是信息的摘要:
How do you clear the SQL Server transaction log?
你不想TRUNCATE_ONLY
选项做
备份日志有些东西然后
SHRINKFILE
。首先,这个TRUNCATE_ONLY
选项已被弃用,并且在当前版本的SQL Server中不再可用。其次,如果您使用的是FULL
恢复模式,则会破坏您的日志链并需要新的完整备份。分离数据库,删除日志文件,并重新附加。我无法强调这可能会有多危险。你的数据库可能不回来了,就可能出现为可疑,你可能要恢复到一个备份(如果有的话),等等,等等
使用“收缩数据库”选项。
DBCC SHRINKDATABASE
和维护计划选项来做同样的事情是不好的想法,特别是如果你真的只需要解决日志问题。定位您要调整的文件并使用DBCC SHRINKFILE
或ALTER DATABASE ... MODIFY FILE
(上面的示例)单独进行调整。将日志文件缩小到1 MB。这看起来很诱人,因为,嘿,SQL Server会让我在某些情况下执行它,并查看它释放的所有空间!除非数据库是只读的(并且它应该使用
ALTER DATABASE
来标记),否则这绝对会导致许多不必要的增长事件,因为日志必须适应当前事务,而不管恢复模式如何。暂时释放这个空间的意义是什么?正如SQL Server能够缓慢而痛苦地回收这些空间一样?创建第二个日志文件。这将暂时缓解已经充满磁盘的驱动器,但这就像试图用创可贴修复被刺破的肺部。你应该直接处理有问题的日志文件,而不是仅仅增加另一个潜在的问题。除了将某些事务日志活动重定向到另一个驱动器之外,第二个日志文件确实对您没有任何帮助(与第二个数据文件不同),因为一次只能使用其中一个文件。 Paul Randal also explains why multiple log files can bite you later。
+50此列表的东西*不*要做! -49,因为我不想被删除为投票欺诈的mod。 ;) –
备份事务日志(我假设数据库处于完全恢复),然后收缩文件
DBCC SHRINKFILE (2, x)
(x是一个以MB为单位的目标大小)
确保留有一定的自由文件中的空间以避免自动增长。
如果没有按预期工作,您也可以在收缩之前切换到简单恢复,然后切换回完全。
如果日志继续增长,检查
select log_reuse_wait_desc from sys.databases
有问题的数据库。
- 1. SQL Server事务日志截断/收缩
- 2. SQL服务器 - 事务日志管理
- 3. 日志ODBC,SQL服务器
- 4. SQL事务日志
- 5. SQL服务器清理数据库,事务日志?
- 6. SQL服务器备份不截断事务日志
- 7. 事务日志传送SQL服务器2005年至2008年
- 8. SQL事务日志增长
- 9. 事务日志SQL Server
- 10. Sql Server事务日志读取器
- 11. 服务器事件日志警告
- 12. 服务器2012事件日志转发
- 13. SQL服务器:在日志表
- 14. 远程系统日志服务器上未收到日志
- 15. java日志记录/日志服务器
- 16. SQL服务器事务
- 17. 无法收缩事务日志,无论我做什么
- 18. grails服务器日志
- 19. Glassfish 2服务器日志
- 20. XML-RPC服务器日志
- 21. DB2事务日志
- 22. MySQL事务日志
- 23. 事务日志(MSSQL服务器)的内存/ CPU统计信息
- 24. 如何缩小MS SQL 2000数据库上的事务日志?
- 25. SQL事务日志越来越大
- 26. SQL Server事务日志VLF访问
- 27. SQL事务日志与复制膨胀
- 28. Microsoft SQL事务日志文件大小
- 29. 不太了解SQL Server事务日志
- 30. Sql Server事务日志备份失败
这个问题似乎是题外话,因为它是有关SQL Server管理。 –
你的用例表明你应该*不*缩小你的交易日志。你一直需要它发展到这个规模。 –
很新的stackoverflow,所以不知道管理标签,已添加它。那么,即使在完成备份之后,我也不会缩短日志? – Kai