none
比較奇怪的問題 RRS feed

  • 问题

  • 我在兩個數據庫之間做replication,環境均是SQLServer 2000 企業版.

    只是同步其中兩個表,一段時間均運行正常.

    但是昨天出現了報錯,提示:"can't find stored procudure 'sp_MSupd_tablename' "

    但是在這個提示信息中的那個tabllename 根本就沒被同步.

    請問大概是什麽情況?

     


    If you haven't all the things you want,be grateful for the things you don't have that you didn't want.
    2010年8月6日 0:00

全部回复

  • 'sp_MSupd_tablename' 只是存储过程格式,默认是用发布表的名称代替tablename部分的;不过也可以手工改的,会不会一开始的时候就是用了另外的一个名称呢。

    2010年8月6日 1:50
    版主
  • 'sp_MSupd_tablename' 只是存储过程格式,默认是用发布表的名称代替tablename部分的;不过也可以手工改的,会不会一开始的时候就是用了另外的一个名称呢。


    但是開始一直都是運行正常的..也沒報錯信息.就是不知道爲什麽突然出來這個錯誤...

    一般是哪兒出問題了?


    If you haven't all the things you want,be grateful for the things you don't have that you didn't want.
    2010年8月6日 2:12
  • What kind of replication? Did you double check article?
    2010年8月6日 2:22
  •  'sp_MSupd_tablename' 被删除了
    参考另外正常的那个同步过程,建一个回去试试

    2010年8月6日 2:31
    版主
  • 会报这个错误, 说明这个表应该是有被同步的.

    你可以在发服务器的发布数据库下, 执行下面的语句自己检查一下 (注意修改发布数据库名, 以及 LIKE 中为复制报错信息中的存储过程名)

    -- 发布服务器
    USE 发布数据库;
    SELECT
     *
    FROM sysarticles ART WITH(NOLOCK)
    WHERE upd_cmd LIKE N'%sp_MSupd_tablename%'

    2010年8月6日 4:40
  • 注意查询结果中的 name 是 article name, 不是 object name, 你可以通过结果中的 objid 去得到对应的对象名

    可以通过 artid 去join syssubscriptions 以获取订阅服务器的信息.

    如果这个对象确实是需要同步的, 你可以使用下面的存储过程重新生成订阅相关的存储过程脚本, 然后在订阅服务器上执行生成的脚本就可以修复这个问题了.

    -- 发布服务器上执行
    USE 发布数据库;
    EXEC sp_scriptpublicationcustomprocs
     @publication = 'publication name'
    ;

    2010年8月6日 4:42
  • 我當時僅僅發佈了2個表,但是根本沒包含這個表.

     

    rmiao,

    複製類型是事務性複製


    If you haven't all the things you want,be grateful for the things you don't have that you didn't want.
    2010年8月6日 7:06
  • Maybe someone added it?
    2010年8月6日 13:12
  • 我當時僅僅發佈了2個表,但是根本沒包含這個表.

     

    rmiao,

    複製類型是事務性複製


    If you haven't all the things you want,be grateful for the things you don't have that you didn't want.
    double check 过了吗? 这种事不是凭记忆
    2010年8月7日 4:38