2008-10-20 108 views
1

我已經查看過一些資源,只是想澄清並獲得意見。SQL Server 2000/2005標識列+複製

首先,爲了完全避免任何問題,我們可以不用打擾使用標識列作爲主鍵,而是讓它們自己生成,並且只要這些值都以兩種方式複製,即假定它們在創建的任何時候都始終是唯一的。

爲了解決這個問題,我正在討論2種或更多種方式的複製來解決全局訪問問題,我們有標識列。

現在我們正在設置事務複製,並且兩個數據庫都應該相互複製。

據我所知,它給每個數據庫服務器分配一個種子值的範圍,它會使用這些值,你知道你給出的範圍不會交叉的唯一原因。那麼這是否意味着在複製過程中這些值被插入到種子列中?

因此,如果您將範圍1-10和11-20分配給2個服務器,一旦每個服務器插入了10行,您將在兩個數據庫中都有1-20種子?

回答

4

有一個選項「NOT FOR REPLICATION」可以應用於標識列(以及觸發器和其他約束)。

在您的示例中, server1將種子1-10,但只是接受複製的11-20。

A到設置你的種子幾種方法:

或者:用NOT FOR這樣

  • 種子1複製設置你的種子/增量,增量2
  • 種子2,增加2
  • 種子-1,-2增量
  • 種子-2,-2增量
  • 種子1000000001,增量2
  • 種子1000000002,增量2
  • 種子-1000000002,增量-2
  • 種子-1000000001,增量-2

這給你5億每臺服務器8個服務器

或者: 添加稱爲ServerID的第二列以提供複合鍵,對於ID列使用NOT FOR REPLICATION

這可擴展到256個服務器,用於具有2^32行的tinyint每服務器

無論哪種方式工作...