Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
NEWSEQUENTIALID (Transact-SQL)
-
2025年10月21日
Applies to: SQL Server Azure SQL Database Azure SQL Managed Instance
Creates a GUID that is greater than any GUID previously generated by this function on a specified computer since Windows was started. After Windows restarts, the GUID can start again from a lower range, but is still globally unique. When a GUID column is used as a row identifier, using NEWSEQUENTIALID
can be faster than using the NEWID
function. This is because the NEWID
function causes random activity and uses fewer cached data pages. Using NEWSEQUENTIALID
also helps to completely fill the data and index pages.
Important
If privacy is a concern, don't use this function. It's possible to guess the value of the next generated GUID and, therefore, access data associated with that GUID.
NEWSEQUENTIALID
is a wrapper over the Windows UuidCreateSequential function, with some byte shuffling applied.
Warning
The UuidCreateSequential
function has hardware dependencies. On SQL Server, clusters of sequential values can develop when databases (such as contained databases) are moved to other computers. In Azure SQL Database and when you use Always On, clusters of sequential values can develop if the database fails over to a different computer.
Transact-SQL syntax conventions
Syntax
NEWSEQUENTIALID ( )
Return types
uniqueidentifier
Remarks
NEWSEQUENTIALID
can only be used with DEFAULT
constraints on table columns of type uniqueidentifier. For example:
CREATE TABLE myTable
(
ColumnA UNIQUEIDENTIFIER DEFAULT NEWSEQUENTIALID()
);
When NEWSEQUENTIALID
is used in DEFAULT
expressions, it can't be combined with other scalar operators. For example, you can't execute the following code:
CREATE TABLE myTable
(
ColumnA UNIQUEIDENTIFIER DEFAULT dbo.myfunction(NEWSEQUENTIALID())
);
In the previous example, myfunction()
is a scalar user-defined scalar function that accepts and returns a uniqueidentifier
value.
NEWSEQUENTIALID
can't be referenced in queries.
You can use NEWSEQUENTIALID
to generate GUIDs to reduce page splits and random IO at the leaf level of indexes.
Each GUID generated by using NEWSEQUENTIALID
is unique on that computer. GUIDs generated by using NEWSEQUENTIALID
are unique across multiple computers only if the source computer has a network card.