SQL2005错误:2812 的解决方法_MySQL教程

编辑Tag赚U币
教程Tag:暂无Tag,欢迎添加,赚取U币!

推荐:MySQL和Access的区别
为了适应日新月异的技术,有相当多的软件工程师逐渐地从桌面软件诸如 Microsoft Access 以及 SQL Server,转到使用 MySQL。虽然严格说来MySQL 并非 SQL Server 的对手,但许多服务提供商都支持 MySQL,并视之为便宜而有效率的替代品。 Susan Sales Harkins 经常在 CNET

   一台服务器重装系统后,用附加表再配置同步复制的时候出错:

  sql server 无法创建发布 找不到存储过程 错误 2812

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

  如果你的经历与以下的不完全一致,那么这篇文章可能也值得你参考。

  但如果你的经历恰好一样,而且你在Google或Baidu上苦寻答案而不觅,那么,这篇文章或者能帮你一把。

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

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

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

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

  我们看一下系统表 sysreplservers的内容,有两列:

  终于找到了问题所在了。我们把该表的记录删除。

  然后随便发布一次。

  再把该发布删除。

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

分享:30种mysql优化sql语句查询的方法
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中使用!=或操作符,否则将引擎放弃使用索引而进行全表扫描。 3.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引

来源:模板无忧//所属分类:MySQL教程/更新时间:2013-04-17
相关MySQL教程