服务器重新安装系统后,使用附加表重新配置同步复制时会出现错误:
Sql server无法创建该发布。找不到存储过程。错误2812
在sql server 2005中,数据库DB1位于服务器a上。要更改服务器,应将数据库DB1迁移到B服务器上。DB1用于同步复制。粗心大意,没有删除同步复制(发布和订阅),直接把DB1.mdf和DB1_log.ldf两个文件附加到服务器b上,附加成功,原程序可以连接了。你以为你完了。然而,几天后,当你想再次同步服务器进行实时备份时,你发现你倒霉的时候到了。SQL SERVER 2005像生病一样,只提示:“存储过程未找到”…错误:2812”。
如果你的经历和下面的不完全一致,那么这篇文章或许也值得你参考。
但是如果你的经历完全一样,并且你正在谷歌或者百度上搜索答案,那么这篇文章可能会对你有所帮助。
如果数据在数据库迁移后没有更新。所以你的想法就是把该死的数据库分离出来,然后迁移干净的数据库,不用同步复制。但是,如果你的新数据库已经投入生产,那么,请参考我的方法:
打开B服务器上DB1数据库的系统表,你会发现里面有12个表。这12个表是由同步复制产生的,包括:
这就是问题所在。这12个系统表和1个视图是由同步复制创建的,如果同步复制没有发生,它们就不会出现。我们直接迁移mdf和ldf文件,数据库中的这些系统表和视图也跟着迁移。
不能简单的删除这12个系统表和1个视图,这样也不行。经过长时间的摸索,我发现了真正的问题。
让我们看一下系统表sysreplservers的内容。有两列:
终于发现问题了。我们删除该表的记录。
然后只发布一次。
然后删除发布。
至此,数据库中旧的同步复制信息已经被删除,数据库又变得干净可爱了。