GUID在SQL服务器中是唯一的吗?

时间:2013-09-27 10:09:24

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

我一直想知道跨越sql服务器的GUID的唯一性。

我有一个中央数据库服务器和100个客户端数据库(两个SQL Server)。我有一个合并复制(双向)设置来同步客户端和主服务器之间的数据。同步过程每天发生2-3次。

对于要同步的每个表,我使用GUID作为PrimaryKey,并且每个表在本地添加新记录并在本地生成新GUID。

当在每台客户端计算机以及主数据库服务器上创建GUID时,它将如何确保它在所有客户端和客户端上生成唯一的GUID。主DB?

如何跟踪在其他客户端/服务器数据库中生成的GUID,以便它不会重复该GUID?

4 个答案:

答案 0 :(得分:2)

GUID是唯一的(为了您的目的)

互联网上有无休止的争论 - I like this one

答案 1 :(得分:2)

我认为GUID并不一定是唯一的。它们的独特之处在于,它几乎不可能随机生成相同的GUID,但这就是全部。

但是出于您的目的,这应该没问题 - 它们应该在分布式系统上具有极高的概率。

答案 2 :(得分:2)

你必须做更多的研究,但我认为GUID是基于MAC地址和时间戳,如果我没记错的话。

http://www.sqlteam.com/article/uniqueidentifier-vs-identity

我知道有些MCM在GUID上遇到了唯一的密钥违规行为。

这怎么可能发生?那么,在虚拟世界中,你有虚拟适配器。

如果将一台虚拟机从一台主机复制到另一台主机,则可以使用相同的适配器MAC地址吗?

现在,如果两个图像同时运行,则可能没有唯一的GUID。

然而,情况很少见。您始终可以向该键添加另一个字段以使其唯一。

关于是否将GUID用作群集PK存在争议。请记住,任何其他索引都将在叶子(节点)中获取PK的副本。对于每个记录x个索引,这是16个字节。

我希望这会有所帮助。

约翰

答案 3 :(得分:1)

您无需执行任何特殊操作即可确保GUID / Uniqueidentifier具有全局唯一性。这一基本保证是对GUID的激励要求。