适用于:SQL Server
Azure SQL 数据库
Azure SQL 托管实例
在启动 Windows 后在指定计算机上创建大于先前通过该函数生成的任何 GUID 的 GUID。 Windows 重启后,GUID 可以从较低的范围重新开始,但仍全局唯一。 当 GUID 列用作行标识符时,使用 NEWSEQUENTIALID 速度可能比使用 NEWID 函数更快。 这是因为该 NEWID 函数会导致随机活动并使用更少的缓存数据页。 使用 NEWSEQUENTIALID 还有助于完全填充数据和索引页。
重要
如果隐私是个问题,请不要使用此函数。 可以猜测下一个生成的 GUID 的值,因此,访问与该 GUID 关联的数据。
NEWSEQUENTIALID 是 Windows UuidCreateSequential 函数的包装器,应用了一些 字节洗牌。
警告
该 UuidCreateSequential 函数具有硬件依赖项。 在 SQL Server 上,当数据库(如包含的数据库)移动到其他计算机时,可以开发顺序值的群集。 在 Azure SQL 数据库中和使用 Always On 时,如果数据库故障转移到其他计算机,则顺序值的群集可以开发。
语法
NEWSEQUENTIALID ( )
返回类型
uniqueidentifier
注解
NEWSEQUENTIALID只能与 uniqueidentifier 类型的表列的约束一起使用DEFAULT。 例如:
CREATE TABLE myTable
(
ColumnA UNIQUEIDENTIFIER DEFAULT NEWSEQUENTIALID()
);
在表达式中使用DEFAULT时NEWSEQUENTIALID,不能与其他标量运算符组合使用。 例如,无法执行以下代码:
CREATE TABLE myTable
(
ColumnA UNIQUEIDENTIFIER DEFAULT dbo.myfunction(NEWSEQUENTIALID())
);
在上一个示例中,myfunction() 是一个由标量用户定义的标题函数,它接受并返回 uniqueidentifier 值。
NEWSEQUENTIALID 不能在查询中引用。
可用于 NEWSEQUENTIALID 生成 GUID,以在索引的叶级别减少页拆分和随机 IO。
使用 NEWSEQUENTIALID 的每个 GUID 在该计算机上都是唯一的。 仅当源计算机具有网卡时,使用所使用的 NEWSEQUENTIALID GUID 才在多台计算机上是唯一的。