MS SQL Server行GUID列

时间:2010-12-14 18:57:22

标签: sql-server sql-server-2008 guid

我为询问什么似乎是一个疲惫的问题道歉,但我读过的论坛回复或文档似乎没有提供足够的答案。

MS SQL Server 2008中Row GUID Column属性的用途是什么?

让我继续说明。我已经看到“不要使用GUID作为PK”重复这个问题的答案,这似乎与我完全无关。如果我设置Row GUID Column它是否强制GUID列成为主键或什么?

重新解释我的原始问题:如果我的表中有一个GUID列在索引编制中没有任何作用,那么我是否可以通过将该GUID列设置为Row GUID Column来获得任何收益?

5 个答案:

答案 0 :(得分:35)

它使您可以使用$ ROWGUID变量而不是列名。 它主要用于合并复制。 它不会强制PK的GUID列,您只能显式声明PK。 除非您计划实施合并复制,否则您上一个问题的答案是否定的。

答案 1 :(得分:8)

ROWGUIDCOLUMN主要用于复制场景,您需要将多个卫星数据库表的内容组合到一个中央数据库中。

将ROWGUIDCOLUMN添加到正在复制的表中可确保复制引擎可以使用ROWGUIDCOLUMN字段来区分具有相同主键值的记录。

由于这是主要用于确保顺利复制的功能,因此应避免将此列用作主键。您的主键应该是由您控制的逻辑业务实体,并且不会影响所选数据库引擎的特定功能的操作特性。

答案 2 :(得分:2)

RowGUID列用于复制。它允许复制引擎正确合并。启用复制时,此列将添加到尚未具有RowGUID列的表中。

除非您计划实施复制,否则您将无法获得任何收益。它相当于将newsequentialid()设置为列的默认值。

答案 3 :(得分:0)

它不是强制它成为主键,属性只是确定该字段是否会自动更新。如果要在应用程序中创建GUID并将其发送,请将此属性设置为false,否则将其设置为true并让数据库自动创建它。如果该字段是聚簇索引,请确保默认值为NEWSEQUENTIALID()。

答案 4 :(得分:0)

不,它不会强迫它作为PK。它确实意味着您无法创建第二个唯一标识符并将其指定为行GUID列