我已经创建了新的数据库和日志文件groth非常过去,我得到的错误消息,日志是由于‘备份’已满。
我查看了此数据库与服务器中其他数据库之间的差异,发现在所有数据库中,log_reuse_wait为0,log_reuse_wait_desc为NOTHING,而在我的数据库中,log_reuse_wait为0,log_reuse_wait_desc为LOG_BACKUP。
我想在我的数据库中将这个属性更改为0,什么也不做。我该怎么做呢?
发布于 2012-11-25 23:33:30
我找到了解决方案。即使数据库处于SIMPLE模式,也需要等待BACKUP_LOG,因此您需要将恢复模式更改为FULL,然后使用no wait将恢复模式更改回SIMPLE
USE [master]
GO
ALTER DATABASE <db name> SET RECOVERY full
GO
ALTER DATABASE <db name> SET RECOVERY SIMPLE WITH NO_WAIT;
GO
USE [db name]
GO
DBCC SHRINKFILE('<log file name>', 0, TRUNCATEONLY)发布于 2012-11-23 04:06:49
这是一个只读状态变量。它会告诉您为什么此时不能截断日志。
你必须消除这种情况的原因,而不是仅仅改变值(这甚至是不可能的)。
备份数据库日志或切换到SIMPLE恢复模式。您可能应该稍微阅读一下这两个方面的内容,以便理解其中的含义。
发布于 2013-11-15 01:05:43
David W.的脚本对我来说不是很有效。(SQL Server2008 r2)
我需要稍微修改一下。按原样使用脚本,我得到的消息是数据库master没有这样的文件。按照David W的建议更改数据库,然后切换到目标数据库并运行DBCC SHRINKFILE()命令。
此外,DBCC SHRINKFILE()的第一个参数必须是数据库日志文件的逻辑名称,该文件在以下脚本中表示为logical_file_name_for_LOG
USE [master]
GO
ALTER DATABASE <db name> SET RECOVERY full
GO
ALTER DATABASE <db name> SET RECOVERY SIMPLE WITH NO_WAIT;
GO
USE [db name]
GO
DBCC SHRINKFILE('<logical_file_name_for_LOG>', 0, TRUNCATEONLY)https://stackoverflow.com/questions/13519125
复制相似问题