我的数据库服务器刚刚用完了磁盘空间。事务日志占用了 100GB 以上的空间,而我只有 30GB 的可用空间。因此,一些交易需要无限的时间来处理,从而导致 9002 错误。
我想问有没有一种方法可以拆分此事务日志并删除其中一个以获得一些可用空间。现在我无法通过添加另一个磁盘来进行备份或增加磁盘空间。
如果有人有比拆分事务日志更好的解决方案,那就太好了。
我的数据库服务器刚刚用完了磁盘空间。事务日志占用了 100GB 以上的空间,而我只有 30GB 的可用空间。因此,一些交易需要无限的时间来处理,从而导致 9002 错误。
我想问有没有一种方法可以拆分此事务日志并删除其中一个以获得一些可用空间。现在我无法通过添加另一个磁盘来进行备份或增加磁盘空间。
如果有人有比拆分事务日志更好的解决方案,那就太好了。
有很多关于处理从这里链接到的大型日志的好资源:
基本上,您要么需要获得更多空间、备份日志,要么在数据库上切换到简单恢复模式。每种方法都有其起伏。
在实践中
数据、日志和操作系统应该在不同的磁盘上……比如说 C 代表 OS,E 代表数据,L 代表日志。
如果您的事务日志在事务备份后没有缩小,那么您可能需要检查您的设置。FULL 或 Simple(不收缩日志)。
强制收缩其中数据库设置为简单的日志是:
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 */
希望这可以帮助