我正在试图找出在a中填充登台数据库的最佳方法 数据仓库。我将拥有许多数据库(相同的架构,SQL Server 2005 Standard)。理想情况下,我会将每个人设置为发布者 同一出版物。将有一个订户数据库(SQL Server 2005 Enterprise)将订阅每个发布者数据库。 将修改发布者数据库中的数据。订户数据库 只会通过其订阅进行更新,因此不需要 将更改发回给任何发布商。发布者数据库不需要 互相更新。复制将通过互联网进行 (虽然可以使用VPN)。
我 我不清楚我应该使用什么样的复制。 我可以复制吗?那么增量字段呢?
答案 0 :(得分:2)
复制绝对可以解决这个问题。除了沼泽标准设置之外,您不必执行任何操作,除非不同发布者表之间存在任何重叠。也就是说,如果你有pub_a和pub_b作为发布者都有一个表tbl_a,那么你必须将它们发布到订阅者的不同表(目标表是在你对sp_addarticle的调用中定义的),或者你必须保证不同发布者之间的数据永远不会发生冲突。在后一种情况下,您还需要注意在调用sp_addarticle时为@pre_creation_cmd参数提供的内容。默认是将表格丢弃到订阅者,这意味着添加到组合中的最后一个发布者将获胜,其余的将被破坏。您需要为第一个添加的发布者指定'drop',为其余发布者指定'none'。祝你好运!
答案 1 :(得分:1)
我相信这是可能的,但你的设置方式与你指定的相反。您将中央数据库设置为发布者,并且您将使用合并复制。
Merge Replication包含允许dynamic filters的选项 - 所以您要做的就是设置过滤器,以便每个订阅者只接收它发起的行 - 可能是通过添加一个列来您的一些表包含行所在的服务器的HOST_NAME()。您不应该对每个表执行此操作,因为一旦您过滤了一个表,就可以使用级联过滤器,使用连接过滤掉其他表中的行。
关于“增量字段” - 我假设您在这里谈论IDENTITY列?幸运的是,这些也是thought about - 基本上,发布者管理IDENTITY范围,并向每个订阅者发出较小范围(默认值为1000)。
警告 - 这些是一般原则,但我之前没有尝试过这种设置。我建议您首先在“玩具”数据库中尝试它,然后尝试使其正常工作。