2013-02-05 63 views
3

這是一個通用的查詢,我的場景是:我有一個數據庫(MS SQL),並創建一個列作爲uniqueidentifier並使用NEWSEQUENTIALID()分配值,我知道它將永遠是唯一的id。但是如果我在三臺機器上部署相同的數據庫會怎麼樣(2臺機器是事務性數據庫,第三臺是複製數據庫)。在複製數據庫中,我將更新列以不自行分配值。從兩個事務性數據庫中,我將每天將數據複製到複製數據庫。現在查詢是,當我複製到複製數據庫時,在兩個事務數據庫上生成的id是否是唯一的。即。是在任何機器上唯一生成的ID?還是隻有一臺機器?無論主機如何,NEWSEQUENTIALID()SQL都會生成唯一的ID嗎?

+0

我的回答是否已成功回答您的問題,或者您還有其他問題不清楚嗎? –

回答

2

是的,它仍然是全球唯一的。

看一看的MSDN頁面吧: http://msdn.microsoft.com/en-gb/library/ms189786.aspx

通過「指定計算機」是指的一個事實,即GUID將低於此前產生的那些更大。所以大於最後生成的只能保證該機器。它的獨特之處在於全球。

+1

只有使用網卡的機器才能保證(我猜這肯定是99.9999%的SQL Server) –

+0

這是真的。另外,如果他在機器之間複製數據,我假設他們有網卡。 –

+0

@ Tom.Bowen89:我已經通過鏈接並且有點困惑,因爲它顯示「創建的GUID大於自Windows啓動以來由指定計算機上此函數生成的任何GUID」,請檢查單詞SPECIFIED計算機,這意味着我猜測在一臺計算機....我的情況是,兩臺機器(trancation數據庫)將在客戶端站點上,而複製數據庫將內置給我,其中複製不是實際的DB-DB複製,但一個使用Windows服務實現的概念和通過web服務完成的調用。 – Chinjoo