SQL Server全局唯一标识符

时间:2009-01-26 10:13:28

标签: sql-server sql-server-2005

何时或为何需要使用全球唯一标识符而不是传统的Idenity列?请帮我理解

4 个答案:

答案 0 :(得分:4)

复制和可扩展性的一个原因是:当存在多个不协调的编写器时,根据定义,它们没有通信通道来为主键创建唯一的int。 GUID不需要通信是唯一的。

答案 1 :(得分:3)

除了其他答案中提到的复制元素......

当您需要创建唯一值但无法访问master数据库或者不想先写出数据时。对于同步的系统尤其如此。例如,销售人员工具允许未连接的销售人员在以后创建数据并将其写入数据库。

对于标识,您必须先在数据库中写入一行,然后才能确定唯一键的内容。使用GUID,您可以在数据库外部的代码中生成GUID,而无需数据库可用。

答案 2 :(得分:0)

GUID通常用于需要复制的情况,以避免来自不同位置的冲突主键的复杂化。

如果我正在开发一个不使用复制的系统,我常常会避免使用GUID的复杂性和开销。

答案 3 :(得分:0)

至少有两种情况,Guid非常有用。

  1. 通过复制或任何类型的多站点设置,数据库将被合并Guid使其变得更加容易。在这种情况下也可以使用Int键,但Guid更容易,并且会出现更少的问题。
  2. 在插入之前生成密钥客户端而无需往返DB,这可能非常有用。