2010-12-14 112 views
26

我很抱歉問什麼似乎是一個疲憊的問題,但沒有論壇的迴應或我讀過的文檔似乎提供了一個合適的答案。MS SQL Server行GUID列

MS SQL Server 2008中Row GUID Column屬性的用途是什麼?

讓我對此作出延伸。我已經看到「不要使用GUID作爲PK」作爲這個問題的答案,這似乎與我完全無關。如果我設置Row GUID Column是否強制將GUID列作爲主鍵或其他?

要改寫我原來的問題:如果我的表中有一個GUID列在編制索引時不起任何作用,那麼我是否願意將該GUID列設置爲Row GUID Column

回答

33

它使您可以使用$ ROWGUID變量而不是列名稱。它主要用於合併複製。 它不強制PK的GUID列,你只能顯式聲明PKs。 最後一個問題的答案是否定的,除非您計劃實施合併複製。

+0

如此清晰,如此簡潔,謝謝大家> _ <我完全驚訝,我無法找到這個問題的答案(相反,所有無關的討論似乎都籠罩在其他論壇的有效答案上)感謝您的幫助! – instantmusic 2010-12-14 19:16:25

+1

不錯。從FYI開始,它僅用於[FILESTREAM](https://msdn.microsoft.com/zh-cn/library/gg471497.aspx)功能:-)。 – 2016-06-07 01:48:59

1

RowGUID列用於複製。它允許複製引擎正確合併。當啓用複製時,此列將被添加到尚未具有RowGUID列的表中。

除非您打算實施複製,否則您將無法使用它。它相當於將newsequentialid()設置爲列的默認值。

0

這不是強制它成爲主鍵,屬性只是確定該字段是否會自動更新。如果您想在應用程序中創建GUID並將其發送,請將此屬性設置爲false,否則將其設置爲true,並讓數據庫自動創建它。如果該字段是聚集索引,請確保默認值是NEWSEQUENTIALID()。

7

ROWGUIDCOLUMN主要用於需要將幾個衛星數據庫表的內容組合到一箇中央數據庫中的複製場景。

將ROWGUIDCOLUMN添加到正在複製的表中可確保複製引擎可以使用ROWGUIDCOLUMN字段區分具有相同主鍵值的記錄。

由於這是一個主要用於確保順利複製的功能,因此應避免將此列用作主鍵。您的主鍵應該是一個邏輯上的業務實體,由您控制並且不會影響所選數據庫引擎特定功能的操作特性。

+0

絕妙的解釋! – 2016-06-08 00:15:38

+0

非常感謝。很高興它是有意義的:) – 2016-06-08 20:41:05

+0

Rich(和@Jeffrey):如何將列標記爲'ROWGUIDCOL' _ensure_「複製引擎可以使用ROWGUIDCOLUMN字段來區分具有相同主鍵值的記錄」如果它不能保證獨特性?是的,默認情況下,該值幾乎總是唯一的,但是除了添加唯一索引/約束之外,沒有任何操作可以防止手動添加重複值。 – 2016-06-11 02:13:19

0

不,它不強制它作爲PK。這意味着你不能創建第二個uniqueidentifier並將其指定爲行GUID列