Sql server SQL Server复制覆盖订阅服务器上的数据

Sql server SQL Server复制覆盖订阅服务器上的数据,sql-server,sql-server-2008,sql-server-2008-r2,sql-server-2012,transactional-replication,Sql Server,Sql Server 2008,Sql Server 2008 R2,Sql Server 2012,Transactional Replication,我们需要将ProjectA和ProjectB数据库中的所有数据复制到中央数据库,所有数据都由不同的SQL Server实例托管。 我通过在PojectA和Project B创建跨国出版物,采用了中央订阅服务器拓扑结构;此外,在托管中央数据库的实例上创建订阅。我确保在文章中选择的属性保持现有对象不变;但是,ProjectA的数据正在被目标位置ProjectB的数据覆盖。 我做错了什么?中央订阅服务器模型的解决方案是水平分区,使用静态行筛选器,并设置“如果名称在使用中,则执行操作”项目属性以删除数据

我们需要将ProjectA和ProjectB数据库中的所有数据复制到中央数据库,所有数据都由不同的SQL Server实例托管。 我通过在PojectA和Project B创建跨国出版物,采用了中央订阅服务器拓扑结构;此外,在托管中央数据库的实例上创建订阅。我确保在文章中选择的属性保持现有对象不变;但是,ProjectA的数据正在被目标位置ProjectB的数据覆盖。
我做错了什么?

中央订阅服务器模型的解决方案是水平分区,使用静态行筛选器,并设置“如果名称在使用中,则执行操作”项目属性以删除数据。如果项目具有行筛选器,则仅删除与筛选器匹配的数据

水平分割 理想情况下,中央订阅服务器拓扑中的已发布表将进行水平分区。为了对要发布的表进行水平分区,应该添加一个特定于位置的列,并将其作为复合主键的一部分包括在内

静态行过滤器 对于要在中心订阅服务器拓扑中发布的每个项目,应定义一个静态行筛选器,以便在名称处于“使用中”项目属性时利用该操作。静态行筛选器使用WHERE子句选择要发布的数据。要从发布服务器1发布行,请为filter子句指定LocationID=1。同样,要发布发布服务器2和发布服务器3中的行,请分别为filter子句指定LocationID=2和LocationID=3

如果名称正在使用,则执行操作 创建发布和添加项目时,需要将“项目属性”操作(如果名称正在使用)设置为“删除数据”。如果项目具有行筛选器,则仅删除与筛选器匹配的数据。可以使用“新建发布向导项目属性”对话框或使用复制存储过程,并为@pre_creation_cmd参数指定delete值来设置该属性。这样,当从多个发布快照初始化或重新初始化中心订阅服务器时,将保留以前应用的快照数据,因为只有与筛选器子句匹配的数据才会被删除


我将在中更详细地介绍这一点。

您能详细说明一下吗。你能用一个清晰的步骤列表来证明我吗?第一步,水平分区你的数据。步骤2,实现静态行过滤器。步骤3,设置“如果名称在使用中”项目属性的操作以删除数据。如果项目具有行筛选器,则仅删除与筛选器匹配的数据。我在这里详细介绍了这一点:获取此错误消息:过程或函数sp_MSins_dbopayin指定的参数太多。来源:MSSQLServer,错误号:8144获取帮助: