日前,由于业务需要,我要把一个数据库直接迁移到新的实例上
用的方法比较古老,就是直接停旧服务器,将数据文件复制到新服务器上,附加数据库
当然这个附加没有什么可说的了,但是在附加后需要将原来库上的发布重建,在按正常流程建立发布的最后,出现了一个错误:
图中隐去的部分是我要发布内容的库名,涉及到公司业务,就不在这里显示了
OK,,然后我进到需要发布内容库的系统表中,可以看到这么这么一堆系统表,就是之前建立发布时候自动建立的一堆系统表:
看一下箭头标出的那张表
内容是这样的
抱歉各位又涂了不少东西,上面涂掉的是库名,下面涂的是实例名,为了不暴露公司业务,我还是小心一点吧
需要说的是,下面涂掉的实例名,是迁移DB之前的实例名,问题就是出在这里了.
我们来手动清理一下之前的发布信息:
exec sp_removedbreplication @dbname = '发布库'
再看发布库,时自动创建的系统表就已经不见了,这时就可以重建发布
当然,还有一个比较low的方法,就是手动干掉系统表的记录:
DELETE FROM [dbo].[sysreplservers]
这样也可以重建发布,但是这样直接操作系统表是比较危险的,不建议这么操作!!
其实还有一个比较根本的解决办法,干活要细致啊!就是在迁移之前先把订阅复制删除,这样附加上来的库就是一个相对”干净“的数据库了,建立发布就没问题了