我的数据库服务器刚刚用完了磁盘空间。事务日志占用了超过 100GB 的空间,而我只有 30GB 的可用空间。因此,某些事务需要无限长的时间来处理,从而导致 9002 错误。
我想问有没有办法拆分此事务日志并删除其中一个以获得一些可用空间。现在我无法通过添加另一个磁盘来备份或增加磁盘空间。
如果有人有比拆分事务日志更好的解决方案,那就太好了。
有很多关于处理从这里链接到的大型日志的好资源:
https://sqlblog.org/2009/07/27/oh-the-horror-please-stop-telling-people-they-should-shrink-their-log-files
基本上,您要么需要获得更多空间,备份日志,要么在数据库上切换到简单恢复模式。 每种方法都有其起伏。
在实践中
数据、日志和操作系统应该在不同的磁盘上......说 C 表示操作系统,E 表示数据,L 表示日志。
如果您的事务日志在事务备份后没有缩小,那么您可能需要检查您的设置。 "完整"或"简单"(不收缩日志)。
强制收缩数据库设置为简单的日志是:
Alter database <databasename>set Recovery simple /* if database is set to FULL */
USE <databasename>
DBCC SHRINKFILE (<log_name>, 0, TRUNCATEONLY)
GO
Alter database <databasename> set Recovery full /* if database is set to FULL */
希望这有帮助