簡體   English   中英

SQL Server事務復制和不同的主鍵

[英]SQL Server Transactional Replication, and different primary keys

使用SQL Server 2005和事務復制,是否可以在訂閱服務器上刪除主鍵約束,而在發布服務器上保留主鍵約束?

Primary我想這樣做是因為我想在與現有集群約束不同的列上集群。 我認為我不能在不先刪除約束的情況下將其從集群轉換為非集群,並且復制已經在進行。

您為什么不離開主鍵並在訂閱服務器上創建其他非聚集索引,還是不能解決您的問題? 如果在訂閱服務器上建立其他列索引的原因是性能,那么這應該是一個解決方案。

這可能適用於快照復制,但是我不確定它是否適用於事務復制。 對表進行復制的唯一要求是存在主鍵,以允許唯一地標識每一行。

您可以嘗試暫停復制,然后嘗試刪除主鍵約束,將其重新創建為非群集PK,然后取消暫停復制。 如果SQL Server不允許您刪除PK,則在進行任何損壞之前會先找到。

替代方法是中斷復制並重新初始化它。

無論哪種方式,您都需要在維護時段內進行更改。

直接地,對於主鍵是不可能的。 反之亦然:設置事務復制時,在選擇要復制的項目時,可以選擇其他屬性,例如“檢查外鍵約束”。 將該屬性設置為false。 在db1中,使用一些包含該表作為主鍵的新表tb1將主鍵轉換為外鍵。 因此,最終,在復制數據庫db2上,將不會復制外鍵約束,從而使您可以執行所需的操作。

復制過程的基礎是在不同服務器之間維護相同的數據庫組織。

您在這里的問題可以被視為詢問是否可以使用復制過程來破壞此基本復制原理。

因此,答案是否定的,但是我仍然對讓您提出這個問題的原因感興趣。 我是否應該說這個“雙主鍵”選項被視為解決另一個問題的方法? 我認為您應該回到最初的問題,並嘗試尋找另一種解決方法。

我做了自己的作業,得出的結論是,您可以消除對訂戶的限制。

我設置了一個簡單的事務復制方案,將主鍵放在了訂閱服務器上,然后進行了一些插入,刪除和更新,並驗證了更改是否已復制到訂閱服務器。

我想我應該先這樣做。 我不知道那會那么容易:)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM