SQLServer 复写和异常排查
散发者/分发者:一般一个(类似出版社) 发行者/发布者:可以多个(多种书刊) 订阅者:收阅,存储 工厂充当发布者和分发者 总公司SfisRepSrv作为订阅者 工厂主机上作复写,往总公司SfisRepSrv中推数据 1)工厂主机上host文件添加复写主机IP地址(C:windowsSystem32driversetc) 127.0.0.1 localhost 61.145.X.X SfisRepSrv 2)总公司SfisRepSrv中还原一份数据库(还原后,复写回来会比较快速同步) 3)工厂主机上配置分发 4)工厂主机上新建发布 5)新进的发布中再新建订阅(事务复制) 6)发布服务器――项目属性――选择非聚集索引(代理――复制代理计划,更改复写时间) 注意:被复写的数据表必须有PK,也就是没有主键的数据表不能被复写; ----------------------------------------------------------------------------------------- 复写常见异常处理: use distribution go -- 查找状态不正常的发布 select status,* from dbo.MSsubscriptions where status<>2 -- 修改状态 update dbo.MSsubscriptions set status=2 where status<>2 错误:应用复制的命令时在订阅服务器上找不到该行 a. 可以采用“主键冲突”错误的处理方式,跳过错误,然后再用tablediff比较两个表的数据差; b. 在订阅端补充缺失的数据 --使用如下语句找出错误号,失败的代理 得出xact_seqno select top 100 e.xact_seqno,e.command_id,e.* from dbo.MSdistribution_history h join dbo.MSrepl_errors e on h.error_id=e.id where comments not like '%transaction%' ? ? order by id desc -- 在分发数据库上执行:sp_browsereplcmds,注意必须限定开始和结束 xact_seqno,0);">得出article_id=79 sp_browsereplcmds '0x0001C2FA0000E607001C00000000','0x0001C2FA0000E607001C00000000' ? select publisher_db,article From dbo.MSarticles where article_id=79 and publication_id=( select publication_id from MSpublications with(nolock) where publication='publish_lcwsfis') 如复制监视器中未分命令,出现了计数错误,可以先停止订阅列表,然后再同步。 错误提示: 进程无法在“WIN-XXX”上执行“sp_replcmds”。 (源: MSSQL_REPL,错误号: MSSQL_REPL20011) 获取帮助: http://help/MSSQL_REPL20011 无法作为数据库主体执行,因为主体 "dbo" 不存在、无法模拟这种类型的主体,或您没有所需的权限。 (源: MSSQLServer,错误号: 15517) 获取帮助: http://help/15517 进程无法在“WIN-XXX”上执行“sp_replcmds”。 (源: MSSQL_REPL,错误号: MSSQL_REPL22037) 获取帮助: http://help/MSSQL_REPL22037 原因解决办法 ? ALTER AUTHORIZATION ON DATABASE::[数据库名] TO [sa] ? ALTER AUTHORIZATION ON DATABASE::[数据库名] TO [fabu] ? USE 数据库名 ? GO ? sp_changedbowner 'fabu' ? ? 进程无法在“WIN-XXX”上执行“sp_repldone/sp_replcounters” 解决办法: ?uses 数据库名 ?EXEC sp_repldone @xactid =NULL,@xact_segno =NULL,@numtrans = 0,@time =0,@reset =1
EXEC sp_replflush,然后再重启SQL Server Agent就可以了。 有时不重启也可以的 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |