您的位置:首页 > 其它

跳过事务复制中的错误

2006-12-24 16:46 375 查看
对于事务性复制,有两种方法可以跳过在分发过程中遇到的错误:

分发代理的 -SkipErrors 参数,可用来跳过某种类型的错误。有错误的事务将不提交,但后续的事务将提交。

sp_setsubscriptionxactseqno 存储过程,可用来跳过一个或多个导致错误的事务。非 SQL Server 的订阅服务器没有此选项。
-SkipErrors 参数


默认情况下,发布代理遇到错误时就会停止。如果使用 -SkipErrors 参数,并指定了预期的或不想让其干扰复制的错误,则代理就会记录错误信息,然后继续运行。例如,如果要指定分发代理,使其记录重复键违规但继续处理后续事务,就需要指定代理跳过错误 2601(不能在具有唯一索引 '%.*ls' 的对象 '%.*ls' 中插入重复键的行。)和 2627(违反了 %ls 约束 '%.*ls'。不能在对象 '%.*ls' 中插入重复键):

-SkipErrors 2601;2627

-SkipErrors 参数的最常见用法是使用标题为“遇到数据一致性错误时继续”的分发代理配置文件。这样,分发代理就会跳过错误 2601、2627 和 20598(应用复制的命令时在订阅服务器上找不到该行)。

sp_setsubscriptionxactseqno 存储过程


当在订阅服务器上应用 sp_setsubscriptionxactseqno 时,可以用它来跳过导致错误的事务。如果出现故障并且希望跳过一个或多个事务:

可以在分发代理停止后,在分发服务器上执行 sp_helpsubscriptionerrors。此存储过程将返回 xact_seqno 列,该列包含各失败事务的日志序列号 (LSN)。

请执行 sp_setsubscriptionxactseqno,为 @xact_seqno 参数指定一个值。如果要跳过所有失败的事务,请指定 sp_helpsubscriptionerrors 返回的最大日志序列号。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: