SqlServer2000发布和订阅的问题:sql 对发布"XXX'的订阅是无效的、进程未能在“Subscriber”上进行生成

来源:互联网 发布:c语言手册百度云 编辑:程序博客网 时间:2024/06/06 05:28

      一日,因工作需要,需在Sqlserver200中配置发布和订阅,以使多个数据库之间的数据保持同步。

      小生心想,此等小菜大可信手拈来,于是乎,提神挽袖,合并发布-》强制订阅,分分钟搞定。正欲收工之时,屏幕上一道红光闪过,只见复制监视器下赫然出现几个大红叉,煞是醒目,小生心头一紧,随即点开一一查看,同步失败!!!再深入一瞅,错误信息大致如:c(恕小生愚钝,详细信息已记不清了),此等怪事小生今生头回遇见,难道是时辰不对?可在小生去了趟WC回来后,错误依然,看来非时辰之过。

      但此等错误小生也是生平头回遇见,为尽快解决战斗,先祭出黄金神器:百度!。将错误信息录入,神器抛出不少锦囊,小生花了整整三个小时逐一试用,无一能解!一招不行,小生遂又祭出终极神器:谷歌!苍天不辜,终极神器就是非同凡响,小生终于在一西域锦囊中发现了点端倪:@@servername!!!

      小生这才想起,以前在订阅服务器上安装完SQLServer 后,改过机器名,遂打开查询分析器,输入:

     select @@servername

靠!果然是他,查询结果显示的是我以前的机器名,问题八九不离十九出在此地,于是乎,小生将现在的机器名加入并除去旧机器名:

  sp_dropserver '旧的机器名'

   sp_addserver 'DREAM', 'local'(PS:Dream即是小生机器名)

完毕,重新启动SQL,小生心想这下应该解决战斗。

 

      启动完毕后,进入发布服务器,重新执行合并代理程序.........进行中......晕,又是红叉!小生的心如同落入冰窟,还好小生够坚强,打开错误信息,还好,原来的错误没了,不过一个新的错误诞生了:

    

进程未能在“Subscriber”上进行生成

错误详细信息:进程未能在“Subscriber”上进行生成。
(源: 合并复制提供程序 (代理程序); 错误代码: -2147200994)
---------------------------------------------------------------------------------------------------------------
无法将 NULL 值插入列 'nicknames',表 'scyz_ext.dbo.MSmerge_genhistory';该列不允许空值。INSERT 失败。
(源: DREAM (数据源); 错误代码: 515)

 

 

 

小生立即回到订阅服务器,查询@@servername,怪了,居然是'NULL’,难怪,遂重新执行命令:

       sp_addserver 'DREAM', 'local'(PS:Dream即是小生机器名)

提示:服务器 'DREAM' 已存在,小生一不做二不休,干脆删了重来:

     

  sp_dropserver 'DREAM'

   sp_addserver 'DREAM', 'local'(PS:Dream即是小生机器名)

然后再:select @@servername,终于把服务器名改过来了。

 

再回到发布服务器,重新执行合并代理程序,小生是双手紧拽,汗毛竖立,口念佛语。。。。。。。。

成功!终于成功,红叉消失,屏幕又恢复了往日的平静,似乎刚才的战斗从未发生过,再经过一番测试,完全正确,小生心头一块巨石终于落下,但是为何造成该错误仍然不明,还望高手指教。在此还要谢过那位不知名的西域壮士。

 

小生因百度类似问题,未见正确解决办法,所以在此写下,后来的仁兄如遇到同样问题,不妨一试,但小生也不能保证此法能解决类似问题。如不能解决,还望口下留情。

原创粉丝点击