共用方式為


NEWSEQUENTIALID (Transact-SQL)

適用於:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceMicrosoft Fabric 中的 SQL 資料庫

建立一個 GUID,該 GUID 會大於這個函數先前在指定的電腦啟動 Windows 後所產生的任何 GUID。 Windows 重新啟動之後,GUID 可以從較低的範圍重新啟動,但仍是全域唯一的。 當 GUID 資料行用作資料列識別碼時,使用 NEWSEQUENTIALID 可能比使用 函數 NEWID 更快。 這是因為函數 NEWID 會導致隨機活動,並使用較少的快取資料頁。 使用 NEWSEQUENTIALID 也有助於完全填滿資料和索引頁面。

重要

如果擔心隱私,請不要使用此功能。 您可以猜測下一個產生的 GUID 值,因此存取與該 GUID 相關聯的數據。

NEWSEQUENTIALID是 Windows UuidCreateSequential 函式的包裝函式,並套用一些位元組隨機。

警告

UuidCreateSequential 式具有硬體相依性。 在 SQL Server 上,當資料庫 (例如自主資料庫) 移動到另一部電腦時,順序值的叢集便可進行開發。 在 Azure SQL 資料庫中,當您使用 Always On 時,如果資料庫容錯移轉至不同的電腦,則可能會開發循序值的叢集。

Transact-SQL 語法慣例

語法

NEWSEQUENTIALID ( )

傳回類型

uniqueidentifier

備註

NEWSEQUENTIALID只能與 DEFAULT 類型的表格資料行的條件約束搭配使用。 例如:

CREATE TABLE myTable
(
    ColumnA UNIQUEIDENTIFIER DEFAULT NEWSEQUENTIALID()
);

在運算式中使用NEWSEQUENTIALIDDEFAULT,它無法與其他純量運算子結合。 例如,您無法執行下列程式碼:

CREATE TABLE myTable
(
    ColumnA UNIQUEIDENTIFIER DEFAULT dbo.myfunction(NEWSEQUENTIALID())
);

在上一個範例中,myfunction() 是一個純量使用者自訂的純量函數,可以接受和傳回 uniqueidentifier 值。

NEWSEQUENTIALID 無法在查詢中引用。

您可以使用來 NEWSEQUENTIALID 產生 GUID,以減少索引分葉層級的頁面分割和隨機 IO。

使用 產生 NEWSEQUENTIALID 的每個 GUID 在該電腦上都是唯一的。 只有在來源電腦有網路卡時,使用所 NEWSEQUENTIALID 產生的 GUID 在多部電腦上才是唯一的。