在SQL Server的复制中出现在错误“应用复制的命令时在订阅服务器上找不到该行”,换上以前的做法就是删除掉这个复制,然后再新建一个复制,但是这次,我突然想BAIDU一下,看看别人是怎么处理这个问题的,然后发现找到的文章都是从MSDN上抄下来的,因此我决定把我的做法写下来。
首先查MSDN,确定这个错误的ID为20598,这个下面会用到;确定了错误ID之后,有两种方法可以跳过这个错误
第一种是使用“右键-》复制-》分发服务器属性-》默认配置文件-》然后新建一个新的配置文件,”这样子就可以让分发的所有复制都使用新的配置文件,一般用来修改一些公共的参数。
第二种是打开复制监视器,然后双击你要修改的那个复制,在“操作”菜单下有个代理配置文件,打开它后新建一个配置文件,然后使用这个配置文件,这种方法用来修改单个的复制的参数。
新建后修改-SkipErrors这一项,点“值”栏后输入刚刚查到的ID号,就是20598,点确定,然后勾上你刚刚新建的这个配置文件。
重启代理,打开复制监视器,你会发现它已经跳过了这个错误。
如果是对等数据复制的话,要慎用,因为可能导致两个数据库的数据不一致,请先查明原因,然后再决定是否要跳过这个错误。
于事务性复制,有两种方法可以跳过在分发过程中遇到的错误:
分发代理的 -SkipErrors 参数,可用来跳过某种类型的错误。有错误的事务将不提交,但后续的事务将提交。
sp_setsubscriptionxactseqno 存储过程,可用来跳过一个或多个导致错误的事务。非SQL Server 的订阅服务器没有此选项。
重要事项:
在典型的复制处理中,应该不会遇到任何需要跳过的错误。跳过错误时要谨慎,要了解发生错误的条件、错误的起因以及需要跳过错误或特定事务而不解决的理由。如果在订阅服务器上跳过发布服务器上提交的事务,则这两个节点就不会完全同步,这会导致其他错误。
-SkipErrors 参数:
默认情况下,发布代理遇到错误时就会停止。如果使用 -SkipErrors 参数,并指定了预期的或不想让其干扰复制的错误,则代理就会记录错误信息,然后继续运行。例如,如果要指定分发代理,使其记录重复键违规但继续处理后续事务,就需要指定代理跳过错误 2601(不能在具有唯一索引 ’%.*ls’ 的对象 ’%.*ls’ 中插入重复键的行。)和 2627(违反了 %ls 约束 ’%.*ls’。不能在对象 ’%.*ls’ 中插入重复键): -SkipErrors 2601;2627
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
相关推荐
-
利用IIS实现SQL Server合并复制(上)
微软SQL Server合并复制(merge replication)功能为企业进行站点间安全的数据复制提供了一个新的选择。而在2005版之后,我们更是可以使用IIS来完成这一工作。
-
SQL Server复制基础指南
微软SQL Server的复制功能是一项非常强大的技术,它可以实时地将数据从一个服务器移动到另一个,无论单向还是双向都可以。
-
大型SQL Server数据库扩展方案分析
当你的数据库变得越来越大,增长的交易数量使得服务器越来越难以承受它带来的压力时,你该怎么办?扩容一定是你第一个想到的。
-
SQL Server复制:何时说不
如果你需要一个繁忙的数据库可以全球访问,云计算平台也是一个不错的选择,比如Windows Azure。