是否可以在SQL Server中为系统表编写脚本以进行合并复制

时间:2012-12-07 10:43:55

标签: sql-server replication merge-replication

我刚刚开始新工作,成为系统中唯一的开发人员。首先,我想建立一个与实时系统相同但没有任何数据的开发系统。然后我想用测试数据填充它。 所以我做的第一件事就是编写数据库脚本并在我自己的机器上重新创建数据库。但是,当我调用存储过程时,我遇到了问题。我得到的错误消息是“无效的对象名称'dbo.sysmergearticles”。 我相信这与合并复制有关,但这是我一无所知的领域。现在我只想让测试系统启动并运行。 如果我查看实时系统上的系统表,那么就会出现'dbo.sysmergearticles',以及其他一些表。有没有一种方法可以编写这些对象的脚本,以便我可以使用脚本创建一个测试系统?

1 个答案:

答案 0 :(得分:1)

您是对的,实时系统上存在sysmergearticles表示它涉及合并复制,或者具有来自先前Merge发布或订阅的孤立元数据。

在实时系统上,在SSMS中的对象资源管理器中,展开“复制”节点和发布/订阅节点。您需要确定实时系统是否涉及活动的Merge拓扑,或者Merge系统表是否来自先前拓扑的孤立。您可以运行以下查询来确定:

select * 
from sys.databases
where is_published = 1 or is_merge_published = 1 or is_subscribed = 1

如果实时系统涉及活动拓扑,那么您需要确定它是发布者还是订阅者。从那里,您可以通过右键单击对象资源管理器中的发布或订阅来编写出版物和订阅的脚本 - >生成脚本...有关脚本复制的详细信息,请参见Scripting Replication。然后,您可以在测试系统上重新创建拓扑。