Sql server SQL Server事务复制和不同的主键

Sql server SQL Server事务复制和不同的主键,sql-server,replication,constraints,Sql Server,Replication,Constraints,对于SQL Server 2005和事务复制,我是否可以删除订阅服务器上的主键约束,同时保留发布服务器上的主键约束 Primary我之所以要这样做,是因为我想在不同于现有集群约束的列上进行集群。我认为,如果不先删除约束,就无法将约束从群集转换为非群集,而且复制已经在进行。这可能适用于快照复制,但我不确定它是否适用于事务复制。允许复制表的唯一要求是存在一个主键,以允许对每一行进行唯一标识 您可以尝试暂停复制,然后尝试删除主键约束,将其重新创建为非集群PK,然后取消暂停复制。如果SQL Server

对于SQL Server 2005和事务复制,我是否可以删除订阅服务器上的主键约束,同时保留发布服务器上的主键约束


Primary我之所以要这样做,是因为我想在不同于现有集群约束的列上进行集群。我认为,如果不先删除约束,就无法将约束从群集转换为非群集,而且复制已经在进行。

这可能适用于快照复制,但我不确定它是否适用于事务复制。允许复制表的唯一要求是存在一个主键,以允许对每一行进行唯一标识

您可以尝试暂停复制,然后尝试删除主键约束,将其重新创建为非集群PK,然后取消暂停复制。如果SQL Server不允许您删除PK,您将在造成任何损害之前发现

另一种方法是中断复制并重新初始化它


无论哪种方式,您都希望在维护窗口期间进行更改。

直接进行更改,对于主键来说是不可能的。反过来说:当您设置事务复制时,当您选择要复制的项目时,您可以选择不同的属性,如“check foreign key contstraint”。将该属性设置为false。在db1中,将主键转换为外键,并使用包含该主键的新表tb1。因此,最终,在replication db db2上,外键约束不会被复制,从而允许您执行所需的操作。

为什么不保留主键并在订阅服务器上创建其他非聚集索引,或者这不会解决您的问题?如果在订阅服务器上索引其他列的原因是性能,那么这应该是一个解决方案

复制过程的基础是在不同服务器之间保持相同的数据库组织

您在这里的问题可以被视为询问是否可以使用复制过程来打破这一基本复制原则


所以答案是否定的,但我仍然对让你们表述这个问题的原因感兴趣。我是否应该说,这种“双主键”选项被视为解决另一个问题的方法?我认为您应该回到最初的问题,并尝试找到另一种解决方法。

我做了自己的家庭作业,得出结论,您可以取消对订户的限制

我设置了一个简单的事务复制场景,删除了订阅服务器上的主键,然后进行了一些插入、删除和更新,并验证更改是否已复制到订阅服务器

我想我应该一开始就这么做。我不知道会这么容易:)