首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何更改log_reuse_wait和log_reuse_wait_desc

问如何更改log_reuse_wait和log_reuse_wait_desc
EN

Stack Overflow用户
提问于 2012-11-23 03:42:08
回答 4查看 25.5K关注 0票数 1

我已经创建了新的数据库和日志文件groth非常过去,我得到的错误消息,日志是由于‘备份’已满。

我查看了此数据库与服务器中其他数据库之间的差异,发现在所有数据库中,log_reuse_wait为0,log_reuse_wait_desc为NOTHING,而在我的数据库中,log_reuse_wait为0,log_reuse_wait_desc为LOG_BACKUP。

我想在我的数据库中将这个属性更改为0,什么也不做。我该怎么做呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-11-25 23:33:30

我找到了解决方案。即使数据库处于SIMPLE模式,也需要等待BACKUP_LOG,因此您需要将恢复模式更改为FULL,然后使用no wait将恢复模式更改回SIMPLE

代码语言:javascript
复制
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)
票数 1
EN

Stack Overflow用户

发布于 2012-11-23 04:06:49

这是一个只读状态变量。它会告诉您为什么此时不能截断日志。

你必须消除这种情况的原因,而不是仅仅改变值(这甚至是不可能的)。

备份数据库日志或切换到SIMPLE恢复模式。您可能应该稍微阅读一下这两个方面的内容,以便理解其中的含义。

票数 5
EN

Stack Overflow用户

发布于 2013-11-15 01:05:43

David W.的脚本对我来说不是很有效。(SQL Server2008 r2)

我需要稍微修改一下。按原样使用脚本,我得到的消息是数据库master没有这样的文件。按照David W的建议更改数据库,然后切换到目标数据库并运行DBCC SHRINKFILE()命令。

此外,DBCC SHRINKFILE()的第一个参数必须是数据库日志文件的逻辑名称,该文件在以下脚本中表示为logical_file_name_for_LOG

代码语言:javascript
复制
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)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13519125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档