日志无法截断,但不存在CDC或复制

时间:2013-09-11 15:39:48

标签: sql sql-server

我们将数据库恢复到UAT环境并设置AlwaysOn。每当我尝试备份日志时,我都会收到“日志未被截断,因为日志开头的记录正在等待复制或更改数据捕获。请确保日志读取器代理或捕获作业正在运行或使用sp_repldone将交易标记为分发或捕获。“

我已从数据库中删除了CDC并删除了所有复制,但我仍然遇到上述错误。 log_reuse_wait_desc显示为AVAILABILITY_REPLICAREPLICATION

我也试过运行以下内容。

EXEC sys.sp_replflush

EXEC sp_removedbreplication

EXEC sp_repldone @xactid = NULL, @xact_segno = NULL, @numtrans = 0,     @time = 0, @reset = 1

有什么建议吗?

谢谢, 添

3 个答案:

答案 0 :(得分:0)

生成数据库(此数据库已从中恢复)确实已设置复制。即使在没有任何复制的情况下还原了此副本,日志中的事务仍然来自prod。为了解决这个问题,我设置了一个新的出版物,其中包含问题数据库中的一个表,甚至没有创建订阅,然后删除了出版物,问题就消失了。

谢谢, 添

答案 1 :(得分:0)

运行以下解决了我们的问题:

use myDB
go

EXEC sys.sp_cdc_enable_db 
go

EXEC sys.sp_cdc_disable_db 
go

EXEC sp_removedbreplication myDB

答案 2 :(得分:0)

存在相同的问题(SQL 2012)-将prod数据库设置为复制发布者,并在不使用复制的实验室环境中使用还原的副本。找到了此解决方案here

EXEC sp_replicationdboption 'MyDB','publish','true',1

如果得到

〜“未配置分发服务器”错误,

您的服务器可能未设置为管理复制。要克服这一点,您只需使服务器成为分发服务器即可:

在SSMS中:服务器名称:右键单击“复制”,然后逐步完成设置分发服务器的步骤。本地机器应该可以。

EXEC sp_repldone @xactid = NULL, @xact_segno = NULL, @numtrans = 0,    @time = 0, @reset = 1

EXEC sp_replicationdboption 'MyDB','publish','false',1

这样可以更快地重新运行日志备份,并且清除了挂起的日志记录。