背景资料
假设我有两个数据库服务器,都是SQL Server 2008
一个是在我的局域网(ServerLocal)中,另一个是在远程托管环境(ServerRemote)上。
我在ServerLocal上创建了一个数据库,并在ServerRemote上拥有该数据库的精确副本。 ServerRemote上的数据库是Web应用程序的一部分,我想让它的数据与数据库ServerLocal中的数据保持同步。
ServerLocal能够与ServerRemote通信,这是单向流量。从ServerRemote到ServerLocal的通信不可用。
当前解决方案
我认为使用复制是一个很好的解决方案。所以我让ServerLocal成为发布者,订阅被推送到ServerRemote。这很好,当快照转移到ServerRemote时,现有数据将被清除,ServerRemote数据库再次成为ServerLocal上数据库的精确副本。
问题
ServerRemote上存在的ServerLocal上不存在的记录将被删除。这对我的大多数表都无关紧要,但在我的一些表中我想保留现有数据(例如aspnet_users),并在必要时更新记录。
什么样的复制符合我的问题?
答案 0 :(得分:0)
选项C:交易复制。
在您在订阅数据库中拥有数据并且不希望它被快照覆盖之前,我已经完成了这项工作。您可以将初始快照设置为不删除现有记录,也不要创建发布者中的记录(假设它们在那里)或创建发布者中的记录(假设它们不存在)。
查看一下您的具体情况是正确的,或者留下评论,详细说明您最初如何在订阅者中获取数据。我对aspnet_users不太熟悉,那是什么。只有在您不希望订阅者中的数据返回发布者时,事务复制才有用。如果您需要,则必须进行合并复制。