带有约束的SQL Server复制?

时间:2011-11-09 15:19:15

标签: sql-server sql-server-2008 replication sql-server-2008-r2

我基本上有一个数据库和一个应用程序,我想要做的是创建第二个数据库和第二个运行大多数独立的应用程序。设置它很容易,但我现在想要的是两者之间的连接,以便配置工具能够同时配置两个设置。举一个简单的例子,我们可以假设整个配置只在数据库中的一个表中完成。所以我基本上看到两种方法:

修改配置工具,以便它将写入两个服务器而不是仅写入一个服务器,或者使用复制将配置表从一个db传送到另一个db。

由于我不得不深入研究我自己没有编写的很多旧代码,所以我希望到目前为止通过复制完成这项工作。 在使用SQL Server 2008R2时,我可以使用快照,事务和合并复制。快照有点不好,因为我希望整个事情是"实时"这不是快照的工作原理。

交易和合并声音都非常好,我认为两者都有可能,但我遇到了一些问题。事务复制会终止订阅者的约束,这是不可接受的。合并复制不会这样做,但是当我运行第二个数据库时,我无法应用合并复制,因为它想要删除由于现有约束而无法删除的表。

我尝试在没有初始化的情况下设置这两个复制,但这根本不起作用。我想我必须为此设置不同的东西,但我不知道是什么。

有没有办法像我想要的那样让它运行,或者是否还有另一种我完全错过的可能方式?

1 个答案:

答案 0 :(得分:3)

我们大规模使用事务复制来完全按照您在此处描述的内容进行操作,将配置从中心点分发到许多订户数据库。

虽然您可能对事务复制提供的默认选项不满意,但您可以对其行为方式进行大量控制。

在向发布添加文章时设置的模式选项位掩码允许您控制复制到订阅服务器的DDL的几乎所有方面 - 有关完整详细信息,请参阅sp_addarticle上的文档。复制GUI使您可以访问大多数这些设置,但您可能需要使用T-SQL脚本来获得您想要的内容。我目前无法访问数据库来检查GUI中是否显示了check,default和foreign-key约束。

如果复制是单向的,那么即使是默认的事务复制也是合适的,因为没有必要在只读数据库上维护约束,因为没有插入数据。