1

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

紧接着,复制监视器报告错误。在 Distributor to Subscriber History 选项卡上,我收到“子查询返回超过 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

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

4

1 回答 1

1

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

于 2013-02-19T21:36:15.763 回答