<强>可能重复:结果   优点和GUID / UUID数据库键的缺点

是否有任何情况下,它使用的GUID作为主键在SQL Server 2005/8 DB是必不可少的。例如,不使用MS同步框架力这一点,或数据复制的?

有帮助吗?

解决方案

如果您需要多个数据库,通过复制同步你会使用的GUID作为重点。

使用GUID的另一个原因是,如果你想一些远程客户端上创建行如WinForms应用程序,然后通过网络服务等这些提交给服务器。

如果你这样做,我会强烈建议你确保你基于一个自动递增INT不唯一指定自己的聚集索引。它可以是一个相当大的开销将行插入一个表,其中的聚簇索引是一个GUID。

更新:下面是如何建立一个表这样的示例:

CREATE TABLE [dbo].[myTable](
[intId] [int] IDENTITY(1,1) NOT NULL,
[realGuidId] [uniqueidentifier] NOT NULL,
[someData] [varchar](50) NULL,
    CONSTRAINT [PK_myTable] UNIQUE NONCLUSTERED 
    (
   [realGuidId] ASC
    )
)

CREATE CLUSTERED INDEX [IX_myTable] ON [dbo].[myTable] 
(
[intId] ASC
)

您会插入到表中作为正常e.g:

INSERT INTO myTable VALUES(NEWID(), 'Some useful data goes here')

更新:我听了真的好dotnetrocks插曲,大约这个会谈的值得一听 - 的显示#447

其他提示

我使用的GUID作为主键,因为我不希望有复合主键时我建立与与来自所有分布式那些数据同步分布式数据库和一个中央数据库应用程序。随着GUID的我肯定(几乎*)我不会有冲突(违反约束)时,我拉的数据从所有数据块到中央之一。

*它是具有两个不同的地方所产生的相同的GUID高度不可能的,但不是不可能的。

当数据库不集中或一些收集的被远程地执行。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top