我们将数据库恢复到UAT
环境并设置AlwaysOn
。每当我尝试备份日志时,我都会收到“日志未被截断,因为日志开头的记录正在等待复制或更改数据捕获。请确保日志读取器代理或捕获作业正在运行或使用sp_repldone
将交易标记为分发或捕获。“
我已从数据库中删除了CDC并删除了所有复制,但我仍然遇到上述错误。 log_reuse_wait_desc
显示为AVAILABILITY_REPLICA
或REPLICATION
。
我也试过运行以下内容。
EXEC sys.sp_replflush
EXEC sp_removedbreplication
EXEC sp_repldone @xactid = NULL, @xact_segno = NULL, @numtrans = 0, @time = 0, @reset = 1
有什么建议吗?
谢谢, 添
答案 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
这样可以更快地重新运行日志备份,并且清除了挂起的日志记录。