Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql uniqueidentifier在数据库中是唯一的吗?_Sql_Sql Server - Fatal编程技术网

Sql uniqueidentifier在数据库中是唯一的吗?

Sql uniqueidentifier在数据库中是唯一的吗?,sql,sql-server,Sql,Sql Server,我有许多数据库,每个数据库都有一个审计表。其中一个数据库是一个“通用”数据库,其中包含国家、州等表格 此公共数据库的表在其他数据库中作为视图引用 当前我的审核表有一个标识列。为了列出审计记录,我使用一个联合来联合普通数据库中的审计表和公共数据库中的审计表 但是,审核表中的标识列可能相同 如果我在审核表中添加一个uniqueidentifier列并将其用作我的唯一id,该列在数据库中是否唯一?如果您使用内置的uniqueidentifier生成方法,如newId或C的Guid。NewGuid,是的

我有许多数据库,每个数据库都有一个审计表。其中一个数据库是一个“通用”数据库,其中包含国家、州等表格

此公共数据库的表在其他数据库中作为视图引用

当前我的审核表有一个标识列。为了列出审计记录,我使用一个联合来联合普通数据库中的审计表和公共数据库中的审计表

但是,审核表中的标识列可能相同


如果我在审核表中添加一个uniqueidentifier列并将其用作我的唯一id,该列在数据库中是否唯一?

如果您使用内置的uniqueidentifier生成方法,如newId或C的Guid。NewGuid,是的,它在数据库、服务器、国家或地区中都是唯一的

事实上,这是guid的一大用途——复制。如果两个数据库中有相同的GUID,则可以保证它是故意放在那里的

但是,请注意,guid确实有其缺点——它们可能会使索引的性能更差,或者至少需要更多的维护,而且它们通常更大


此外,GUID也不是完全随机的-有几种不同的GUID生成算法,其中一些算法本身是唯一的,例如使用MAC地址作为GUID的一部分-MAC在默认情况下是唯一的,尽管您可以手动覆盖它们-因此每个物理服务器都有一个部分是唯一的,并且机器会确保它不会对两个guid使用相同的时间戳。还有顺序GUID newSequentialId,它可以很方便地避免索引碎片,当然对于聚集索引非常有用-请注意,它们依赖于计算机的MAC地址,并且是可预测的,因此如果您将GUID公开,并且依赖于它们是机密的,您可能不想使用它们。某些GUID算法比其他算法更具可预测性。

它是唯一的。它是一个随机生成的字符串,包含32个字符,可能会有一个1/16^32的副本


没有特定的机制来创建唯一性,极低的概率就可以做到这一切。

可能值得补充的是,您不应该使用NEWSEQUENTIALID函数-这不会达到OP想要的效果。@RhysJones事实上,NEWSEQUENTIALID在所有机器中都是唯一的,但只有在有硬件区分它们的情况下——网卡的MAC地址。服务器往往有唯一的MAC地址。@RhysJones但是,是的,顺序GUI和所有其他GUI一样有自己的问题。实际上,如果遵循正确的算法,有几种机制可以保证唯一性。当然,我见过很多GUID库按照您所说的生成16字节的随机字符串。那不是一个真正的GUID。一个好的健全性检查是查看版本号-如果它不在那里,可能是一个错误的GUID。只有版本4的标准图形用户界面符合您的定义,尽管它们在版本中仍然具有适当的结构,因此您无法获得完整的16个字节-当然,这六个字节不会产生很大的差异。这是一个适当的响应。当然,正如@luuan所说,物理计算机设备中没有确切的随机性,随机性是通过计算生成的,有些使用随机生成算法,有些使用更通用的方法生成guid,正如您所说的。但我并不是想过度设计答案。我的拙见是,你不会决定生成guid的最佳方式,也不会对它进行科学化,只要接受它的唯一性来自较小的概率就足够了。这就是我刚才这样回答的原因。。。。在多元宇宙中,它们在统计上是唯一的吗?这需要多少混乱?