SQLServerReplication常见错误

上传人:宝路 文档编号:19496119 上传时间:2017-11-19 格式:DOC 页数:4 大小:104.59KB
返回 下载 相关 举报
SQLServerReplication常见错误_第1页
第1页 / 共4页
SQLServerReplication常见错误_第2页
第2页 / 共4页
SQLServerReplication常见错误_第3页
第3页 / 共4页
SQLServerReplication常见错误_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《SQLServerReplication常见错误》由会员分享,可在线阅读,更多相关《SQLServerReplication常见错误(4页珍藏版)》请在金锄头文库上搜索。

1、SQLServer Replication 常见错误1. 错误:已将此(这些)订阅标记为不活动,必须将其重新初始化。需要删除 NoSync 订阅,然后重新创建它们 use distributiongo-查找状态不正常的发布select status,*from dbo.MSsubscriptions where status2观察复制链是否能正常运行,正常后用tablediff比较发布链中的表数据是否一致还可以重新初始化快照,但是数据量大就是个悲剧。2. 错误:表、存储过程不存在以及表结构不一致等处理方法:a. 表或存储过程不存在:在订阅端对应的库中补齐缺失的对象;有一种比较奇怪的现象是订阅端

2、表明明存在,但是同步链依然报错,此时可能有两种情况:第一: 表字段不一致,可以参照下面( b)的方式补齐表字段;第二: 表字段也一致,但是依旧报错,可以采取三种方式解决:a. 暂停同步链,然后再次开启,看是否能通过,如果不行,进行下面的步骤;b. 勾选掉同步链中报错的这个表,然后观察同步链,此时去掉了这个表的发布,错误一般都能过去,等到所有数据同步后,再将这个表勾选上,一般都能过;同步链正常后,在用TableDiff 工具比较下这个表的数据;c. 如果b 步骤依然报错,那就只能重建了。b. 列名xxx 无效可以通过以下语句查找缺失的字段对应的表-查找某个发布链中的某个字段(Rp_XXXX 发布

3、名xxx 字段名)select a.name as table_name,b.name as column_name,(selectalter table +a.name+ add +b.name+(casewhen name=nvarcharthencast(b.max_length/2ASvarchar)when name likedate%or name=moneythenelse name end ) from sys.types where system_type_id=b.system_type_id ) as definition FROM dbo.sysarticles a W

4、ITH(NOLOCK) innerjoin sys.columns b WITH(NOLOCK) on a.objid=b.object_idinnerjoin dbo.syspublications c with(nolock) on a.pubid=c.pubidwhere c.name=Rp_XXXXand b.name=xxx3. 错误:. 主键冲突处理方法:跳过错误错误完成后,需要比较两边数据是否一致(比下数据量就行了)-跳过订阅机器上面的错误-在分发机器上 -语法sp_helpsubscriptionerrors publisher = publisher, publisher_d

5、b = publisher_db , publication = publication , subscriber = subscriber , subscriber_db = subscriber_db-get publisher subscriberselect*from MSsubscriber_info-get publisher_db publication subscriber_db=publisher_dbselect*from MSpublications-examplesp_helpsubscriptionerrors SQLw2k8,dbtranpub,dbtranpub_

6、pub,SQLw2k8Subscriber,dbtransub-获取xact_seqno 值-在订阅机器上-sp_setsubscriptionxactseqno publisher= publisher, publisher_db= publisher_db, publication= publication, xact_seqno= xact_seqno-examplesp_helpsubscriptionerrors SQLw2k8,dbtranpub,dbtranpub_pub,xact_seqno-4. 错误:应用复制的命令时在订阅服务器上找不到该行a. 可以采用“主键冲突”错误的处

7、理方式,跳过错误,然后再用tablediff比较两个表的数据差;b. 在订阅端补充缺失的数据-使用如下语句找出错误号selecttop100 e.xact_seqno ,mand_id,e.* from dbo.MSdistribution_history hjoin dbo.MSrepl_errors e on h.error_id=e.idwhere comments notlike%transaction%-失败的代理orderby id desc-用上面查到的具体事务序列号,查看复制组件执行的具体命令-在分发数据库上执行:sp_browsereplcmds,注意必须限定开始和结束xac

8、t_seqnosp_browsereplcmds 0x0000003B00000020000500000000,0x0000003B00000020000500000000-结果如下article_id command1 CALL dbo.sp_MSdel_dboUPCCodeTransaction (000000002 )-找到对应的对象select publisher_db,article From dbo.MSarticles where article_id=1and publication_id=(select publication_id from MSpublications w

9、ith(nolock) where publication=Rp_xxx)-由sp_MSdel 可以知道,这条命令是一个删除语句,因为发布端的数据已经不存在,所以只能跳过;-如果是修改,需要验证上述数据在故障订阅服务器上是否存在,如果不存在,则补上。5. 错误:用户xxx 登录失败或者The process could not connect to Subscriber xxxx.处理方法: 检查账号是否正确,能够登录到发布和订阅服务器,而且有相应的权限。6. 发布xxx 的初始快照尚不可用保证SQLSERVERAGENT已经运行,复制发布内容 发布项目右击右侧的订阅重新初始化如果还不行,复制

10、监视器-发布服务器-xxx-发布的项目-快照,看到进程未能创建文件“XXZSQLPUBunc”,到该文件夹重新配置sql的帐号对该文件夹权限为完全 。7. 进程未能从表“dbo.syncobj_0x3745373834413345”向外大容量复制在写BCP 数据文件时发生I/O 错误(源: ODBC SQL Server Driver (ODBC); 错误代码: 0)解决方法:就是字符类型全部改为n类型的解决问题(char-nchar,varchar-nvarchar,ntext).8. 错误消息:代理xxxx 在出错后正在重试。已重试了25 次。有关详细信息,请参阅Jobs 文件夹中的代理作

11、业历史记录。”发生这个错误一般都是在一台机器上面有比较多的发布链,错误原因在于数据库对Replication使用内存的限制,我们需要更改这个限制来解决这个问题(最好是不要再一台机器上创建太多的发布链),方法如下:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerSubSystems点开Windows项,找到下面这些内容%SystemRoot%system32csrss.exe ObjectDirectory=Windows SharedSection=1024,20480,768将最后的数字(不一定是这个数字,可能是等)改成1024 保存,重启即可。Windows2008 server 如果不是amdin用户可能会不让打开注册表,如果是管理组权限的话,可以到C:windowssystem32 下面找到 regedit32.exe 文件,右键,然后将自己的账号添加到运行权限里面。9.-Cannot drop the database XXX because it is being used for replicationexec sp_removedbreplication database

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号