jer*_*mcc 10 sql-server replication
我在两个数据库之间运行事务复制.我担心它们会略微不同步,但我不知道哪些记录会受到影响.如果我知道,我可以在用户端手动修复它.
SQL Server给了我这条消息:
应用复制命令时,在订阅服务器上找不到该行.(来源:MSSQLServer,错误号:20598)
我环顾四周试图找出什么表,甚至更好的是什么记录导致问题,但我无法在任何地方找到这些信息.
到目前为止我发现的最详细的数据是:
事务序列号:0x0003BB0E000001DF000600000000,命令ID:1
但是如何从中找到表格和行?有任何想法吗?
小智 11
这将为您提供错误所针对的表
use distribution
go
select * from dbo.MSarticles
where article_id in (
select article_id from MSrepl_commands
where xact_seqno = 0x0003BB0E000001DF000600000000)
Run Code Online (Sandbox Code Playgroud)
这将为您提供命令(以及命令执行的主键(即行))
exec sp_browsereplcmds
@xact_seqno_start = '0x0003BB0E000001DF000600000000',
@xact_seqno_end = '0x0003BB0E000001DF000600000000'
Run Code Online (Sandbox Code Playgroud)
我将以最终使用的解决方法回答我自己的问题.
不幸的是,我无法通过SQL Server复制接口(或事件日志)找出导致问题的表.它只是没有说.
所以接下来我想到的是,"即使出现错误,如果我可以继续复制怎么办?" 瞧,有一种方法.事实上,这很容易.有一个特殊的分发代理配置文件称为"继续数据一致性错误".如果启用它,那么这些类型的错误将被记录并传递.一旦通过应用事务并可能记录错误(我只遇到两个),那么您可以返回并使用RedGate SQL数据比较(或其他一些工具)来比较您的两个数据库,对订阅者进行任何更正,然后再次启动复制运行.
请记住,为了实现这一点,您的发布数据库需要在您分配和修复订户数据库的过程中保持"安静".幸运的是,在这种情况下,我有这种奢侈.
| 归档时间: |
|
| 查看次数: |
25049 次 |
| 最近记录: |