使用SQL Server 2005和事务复制,我可以删除订阅者的主键约束,同时保留发布者的主键约束吗?
主要我想这样做是因为我希望在不同于现有聚类约束的列上进行聚类。我不认为我可以将约束从聚簇转换为非聚簇而不先丢弃它,并且复制已经发生。
答案 0 :(得分:1)
为什么不保留主键并在订阅者上创建其他非聚集索引,否则这不能解决您的问题?如果在订户上索引其他列的原因是性能,那么这应该是一个解决方案。
答案 1 :(得分:0)
这可能适用于快照复制,但我不确定它是否适用于事务复制。允许复制表的唯一要求是存在一个主键,以允许唯一标识每一行。
您可以尝试暂停复制,然后尝试删除主键约束,将其重新创建为非群集PK,然后取消暂停复制。如果SQL Server不允许你丢弃PK,你会在造成任何损害之前找到它。
另一种方法是打破复制并重新初始化。
无论哪种方式,您都希望在维护窗口期间进行更改。
答案 2 :(得分:0)
直接来说,对于主键,它是不可能的。反过来说:当您设置事务复制时,当您选择要复制的文章时,您可以选择不同的属性,如“check foreign key contstraint”。将该属性设置为false。在db1中,将主键转换为外键,并将一些新表tb1包含为主键。因此,最终,在您的复制db db2上,不会复制外键约束,从而允许您执行所需的操作。
答案 3 :(得分:0)
复制过程的基础是在不同服务器之间维护相同的数据库组织。
您的问题可以被视为询问是否可以使用复制过程来破坏此基本复制原则。
所以答案是否定的,但我仍然对让你提出这个问题的原因感兴趣。难道我说这个“双主键”选项被视为解决另一个问题的方法吗?我认为你应该回到这个初始问题,并尝试找到另一种解决方法。
答案 4 :(得分:-1)
我做了自己的功课,得出的结论是可以放弃对用户的约束。
我设置了一个简单的事务复制方案,将主键丢弃在订阅者身上,然后进行了一些插入,删除和更新,并验证了更改是否已复制到订阅者。
我想我应该开始这样做。我不知道会那么容易:)。