SQL Server Replication - 重复的订阅代理?

时间:2013-02-19 13:19:39

标签: sql-server-2005 database-replication

我是SQL Server复制的新手,并将一些更改推送到现有的复制环境。它是SQL Server 2005 SP3,具有事务复制功能 我创建了一个新表,向现有表添加了列,并添加了一些SP。我在发布者数据库上做了所有这些。 我创建了一个新快照并重新初始化了订阅。新表和新列被复制到新服务器,数据已成功同步,但只有一次。

之后,复制监视器立即报告错误。在“订阅者历史记录”选项卡上,我收到一条消息“子查询返回的值超过1”。命令试图是......

delete from MSsubscription_articlecolumns
    where artid=89 and
          agent_id = (
              select id from MSsubscription_agents
                  where update_mode > 0 and
                        UPPER(publisher) = UPPER('xxxx') and
                        publisher_db = N'xxxx' and
                        publication = N'xxxxx'
              ) end

为什么会有重复的订阅代理?我该如何解决?感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我能够通过手动编辑MSsubscription_agents表中的数据来解决此问题。有2条记录具有相同的发布者,db和发布名称。我没有删除其中一条记录,而是将旧记录中的update_mode更改为0,将其从原始问题中的问题语句中过滤掉。然后,复制过程能够通过该语句并正确运行。感谢。