2016 - 2024

感恩一路有你

SQL 2812错误解决方法

浏览量:2365 时间:2024-01-21 23:20:22 作者:采采

概述

一台服务器重装系统后,用附加表再配置同步复制的时候出错。在SQL SERVER 2005中,有数据库DB1,在A服务器上。由于要更换服务器,要把数据库DB1迁移到B服务器上。而DB1是用于同步复制的。粗心的你没有把同步复制(发布和订阅)删掉,就直接把和DB1_log.ldf两个文件到B服务器上附加。附加成功了,原来的程序都能连接上,你以为大功告成。但是,几天过后,当你想把服务器重新同步复制,以作实时备份时,你发现自己的倒霉时刻到了。SQL SERVER 2005像病了一样,只提示:“找不到存储过程’’…错误:2812”。

问题分析

如果数据库迁移后,数据并没有更新过。那么你的想法是将这个数据库分离,然后再重新将去掉同步复制的干净数据库迁移过来。但是,如果你的新数据库已经投入生产,那么,请参考我的方法。

打开B服务器上的DB1数据库的系统表,你会发现有12个表在里面。这12个表就是因同步复制而产生的,包括:

- MSmerge_agent_history

- MSmerge_conflicts_info

- MSmerge_contents

- MSmerge_current_partition_mappings

- MSmerge_genhistory

- MSmerge_identity_range

- MSmerge_past_partition_mappings

- MSmerge_replinfo

- MSmerge_sessions

- MSmerge_subscriptions

- MSmerge_tombstone

- MSmerge_tracking

问题就出现在这里了。这12个系统表和1个视图是因同步复制而生的,如果没有发生同步复制,他们是不会出现的。我们把mdf和ldf文件直接迁移过来,数据库里面的这些系统表和视图也随之而来了。

解决方法

不能简单的把这12个系统表和1个视图删掉,这样同样不行。在经过了长时间的摸索后,我发现了问题的真正所在。

你需要执行以下步骤来解决2812错误:

1. 打开SQL Server Management Studio并连接到B服务器上的数据库实例。

2. 在查询窗口中运行以下命令来禁用发布和订阅(同步复制)功能:

```

EXEC sp_removedbreplication 'DB1'

```

3. 运行完以上命令后,再次打开B服务器上的DB1数据库的系统表,你会发现这12个系统表和1个视图已经被成功删除。

4. 现在,你可以重新启用发布和订阅功能(如果需要的话)。

至此,该数据库中的陈旧同步复制信息已经去除,数据库重新变得洁净可爱。

以上是根据个人经验总结的解决SQL 2812错误的方法,希望对遇到类似问题的读者有所帮助。转载自

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。