NEWSEQUENTIALID() (Transact-SQL)

在启动 Windows 后在指定计算机上创建大于先前通过该函数生成的任何 GUID 的 GUID。在重新启动 Windows 后,GUID 可以再次从一个较低的范围开始,但仍是全局唯一的。在 GUID 列用作行标识符时,使用 NEWSEQUENTIALID 可能比使用 NEWID 函数的速度更快。其原因在于,NEWID 函数导致随机行为并且使用更少的缓存数据页。使用 NEWSEQUENTIALID 还有助于完全填充数据和索引页。

重要说明重要提示

如果涉及保密问题,则不要使用该函数。可以猜想下一个生成的 GUID 的值,从而访问与该 GUID 关联的数据。

NEWSEQUENTIALID 是对 Windows UuidCreateSequential 函数的包装。

主题链接图标Transact-SQL 语法约定

语法

NEWSEQUENTIALID ( )

返回类型

uniqueidentifier

注释

NEWSEQUENTIALID() 只能与 uniqueidentifier 类型表列上的 DEFAULT 约束一起使用。例如:

CREATE TABLE myTable (ColumnA uniqueidentifier DEFAULT NEWSEQUENTIALID()) 

当 NEWSEQUENTIALID() 用于 DEFAULT 表达式时,不能与其他标量运算符结合使用。例如,您不能执行以下操作:

CREATE TABLE myTable (ColumnA uniqueidentifier DEFAULT dbo.myfunction(NEWSEQUENTIALID())) 

在上一个示例中,myfunction() 是接受并返回 uniqueidentifier 值的标量用户定义标量函数。

NEWSEQUENTIALID() 不能在查询中引用。

您可以使用 NEWSEQUENTIALID() 生成 GUID 以减少叶级别索引上的页争用。

使用 NEWSEQUENTIALID() 生成的每个 GUID 在该计算机上都是唯一的。仅当源计算机具有网卡时,使用 NEWSEQUENTIALID() 生成的 GUID 在多台计算机上才是唯一的。有关 GUID 的详细信息,请参阅使用 uniqueidentifier 数据