適用於:
SQL Server
Azure SQL Database
Azure SQL 受控執行個體
建立一個 GUID,該 GUID 會大於這個函數先前在指定的電腦啟動 Windows 後所產生的任何 GUID。 重新啟動 Windows 後,GUID 可以從較低的範圍再次啟動,但仍是全域唯一的。 將 GUID 資料行當做資料列識別碼使用時,使用 NEWSEQUENTIALID 可能比使用 NEWID 函數更快。 這是因為 NEWID 函數會造成隨機活動,因此會使用較少的快取資料頁面。 使用 NEWSEQUENTIALID 也有助於完全填滿資料與索引頁面。
如果您有隱私權顧慮,請勿使用這個函數。 因為使用者不難猜出下一個產生的 GUID 值,進而存取與該 GUID 相關聯的資料。
NEWSEQUENTIALID 是 Windows
UuidCreateSequential
函式上的一個包裝函式,其
套用了一些隨機位元組
。
UuidCreateSequential 函式有硬體相依性。 在 SQL Server 上,當資料庫 (例如自主資料庫) 移動到另一部電腦時,順序值的叢集便可進行開發。 使用 Always On 和在 SQL Database 上時,若資料庫容錯移轉至不同的電腦,順序值的叢集便可進行開發。
Transact-SQL 語法慣例
Syntax
NEWSEQUENTIALID ( )
若要檢視 SQL Server 2014 (12.x) 和舊版的 Transact-SQL 語法,請參閱 舊版檔。
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 在多部電腦上才是唯一的。
NEWID (Transact-SQL)
比較運算子 (Transact-SQL)
即將推出:在 2024 年,我們將隨著內容的意見反應機制逐步淘汰 GitHub 問題,並以新的意見反應系統來取代。 如需詳細資訊,請參閱 https://aka.ms/ContentUserFeedback。
提交並檢視相關的意見反應