1

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

修改配置工具,以便它将写入两个而不是只有一个服务器,或使用复制从一个数据库获取配置表到另一个。因为我不得不深入研究很多我自己写的旧代码,所以我希望通过复制来完成这个任务。 由于使用SQL Server 2008R2,我有快照,事务和合并复制可用。快照很糟糕,因为我希望整个事情都是“实时”的,而不是快照的工作方式。

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

我试图设置这两个复制没有初始化,但根本没有工作。我想我必须设置一些不同的东西,但我不知道是什么。

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

+0

您想在站点之间进行双向复制吗?或者你想在其他网站报告?整个数据库?只能读一面吗? – gbn

+0

单向会很好,只有几张表 – Flo

+0

和我的其余问题? – gbn

回答

3

我们大规模地使用事务性复制来做更多或更少的事情,这正是您在此描述的内容,从中心点向多个订户数据库分发配置。

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

在将文章添加到发布时设置的架构选项位掩码允许您控制复制到订户的DDL的几乎所有方面 - 有关完整详细信息,请参阅sp_addarticle上的文档。复制GUI可让您访问大多数这些设置,但您可能需要使用T-SQL脚本才能获得您想要的内容。目前我无法访问数据库来检查GUI中是否出现检查,默认和外键约束。

即使默认的事务复制在这种情况下也适用,如果真的可以接受复制是单向的,因为不需要在只读数据库上维护约束,因为没有数据被插入。

+0

单向确实可以,但仍然不能忽略约束,因为一些要复制的表可能会从订户的其他表中引用不复制。 0x200似乎是我想要的,但是在它的描述中,它只会在引用的表也被复制时才起作用,但情况并非如此。无论如何感谢您指出配置的可能性。 – Flo

+0

@Flo - 将被复制的唯一约束是在引用其他表的复制表上创建的约束。引用复制表的其他(非复制)表的约束不会被复制。 –

+1

@Flo - 如果您需要将非复制表中的约束添加到订阅服务器上的复制表中,则可能需要稍微不同的事务复制模型,其中订阅服务器上的复制表是独立于复制而创建的,并且不复制DDL发布者(使用0x0的'schema_option'和'truncate'的'pre_create_cmd') –