欢迎来到天天文库
浏览记录
ID:34725971
大小:56.63 KB
页数:5页
时间:2019-03-10
《sqlserver复制中错误处理》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、在SQLServer的复制中出现在错误“应用复制的命令时在订阅服务器上找不到该行”,换上以前的做法就是删除掉这个复制,然后再新建一个复制,但是这次,我突然想BAIDU一下,看看别人是怎么处理这个问题的,然后发现找到的文章都是从MSDN上抄下来的,因此我决定把我的做法写下来。 首先查MSDN,确定这个错误的ID为20598,这个下面会用到;确定了错误ID之后,有两种方法可以跳过这个错误 第一种是使用“右键-》复制-》分发服务器属性-》默认配置文件-》然后新建一个新的配置文件,”这样子就可以让分发的所有复制都使用新的配置文件,一般用来修改一些公共的参数。 第二种是打开复制监视器
2、,然后双击你要修改的那个复制,在“操作”菜单下有个代理配置文件,打开它后新建一个配置文件,然后使用这个配置文件,这种方法用来修改单个的复制的参数。 新建后修改-SkipErrors这一项,点“值”栏后输入刚刚查到的ID号,就是20598,点确定,然后勾上你刚刚新建的这个配置文件。 重启代理,打开复制监视器,你会发现它已经跳过了这个错误。 如果是对等数据复制的话,要慎用,因为可能导致两个数据库的数据不一致,请先查明原因,然后再决定是否要跳过这个错误。 于事务性复制,有两种方法可以跳过在分发过程中遇到的错误: 分发代理的-SkipErrors参数,可用来跳过某种类型的错误
3、。有错误的事务将不提交,但后续的事务将提交。 sp_setsubscriptionxactseqno存储过程,可用来跳过一个或多个导致错误的事务。非SQLServer的订阅服务器没有此选项。 重要事项: 在典型的复制处理中,应该不会遇到任何需要跳过的错误。跳过错误时要谨慎,要了解发生错误的条件、错误的起因以及需要跳过错误或特定事务而不解决的理由。如果在订阅服务器上跳过发布服务器上提交的事务,则这两个节点就不会完全同步,这会导致其他错误。 -SkipErrors参数: 默认情况下,发布代理遇到错误时就会停止。如果使用-SkipErrors参数,并指定了预期的或不想让其干扰
4、复制的错误,则代理就会记录错误信息,然后继续运行。例如,如果要指定分发代理,使其记录重复键违规但继续处理后续事务,就需要指定代理跳过错误2601(不能在具有唯一索引’%.*ls’的对象’%.*ls’中插入重复键的行。)和2627(违反了%ls约束’%.*ls’。不能在对象’%.*ls’中插入重复键):-SkipErrors2601;2627--------------------------------------------------------------------------------------------------------附: Mssql错误代码对照表错误消
5、息MSSQL_ENG002601不能在具有唯一索引'%.*ls'的对象'%.*ls'中插入重复键的行。MSSQL_ENG002627违反了%ls约束'%.*ls'。不能在对象'%.*ls'中插入重复键。MSSQL_ENG003165数据库'%ls'已还原,但在还原/删除复制时出错。该数据库仍保留为离线状态。请参阅SQLServer联机丛书中的主题MSSQL_ENG003165。MSSQL_ENG003724无法对%S_MSG'%.*ls'执行%S_MSG,因为它正用于复制。MSSQL_ENG004929无法更改%S_MSG'%.*ls',因为正在为复制而发布它。MSSQL_ENG
6、007395。请参阅对Oracle发布服务器进行故障排除。无法启动链接服务器“%ls”的OLEDB访问接口“%ls”的嵌套事务。由于XACT_ABORT选项已设置为OFF,因此必须使用嵌套事务。MSSQL_ENG014005无法删除发布。该发布已有订阅。MSSQL_ENG014010未将服务器“%s”定义为订阅服务器。MSSQL_ENG014114未将'%s'配置为分发服务器。MSSQL_ENG014117未将'%s'配置为分发数据库。MSSQL_ENG014120无法删除分发数据库'%s'。此分发服务器数据库与发布服务器相关联。MSSQL_ENG014121无法删除分发服务器'
7、%s'。此分发服务器与分发数据库相关联。MSSQL_ENG014144无法删除订阅服务器'%s'。在发布数据库“%s”中已有此服务器的订阅。MSSQL_ENG014150复制-%s:代理%s成功。%sMSSQL_ENG014151复制-%s:代理%s失败。%sMSSQL_ENG014152复制-%s:代理%s计划重试。%sMSSQL_ENG014157由发布'%s'的订阅服务器'%s'创建的订阅已过期,且已停止。MSSQL_ENG014160已设置发布[%s]的阈值[%s:%s]
此文档下载收益归作者所有