次の方法で共有


ニューセクエンティアリッド(Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceMicrosoft Fabric の SQL データベース

Windows が起動されてから、指定されたコンピューターで、この関数によりこれまでに生成されたどの GUID よりも大きい GUID を生成します。 Windows の再起動後、GUID は低い範囲から再び開始できますが、グローバルに一意です。 GUID 列を行識別子として使用する場合、 NEWSEQUENTIALID を使用する方が、 NEWID 関数を使用するよりも高速になる場合があります。 これは、 NEWID 関数によってランダムなアクティビティが発生し、キャッシュされたデータ ページの使用が少なくなるためです。 NEWSEQUENTIALIDを使用すると、データ ページとインデックス ページを完全に塗りつぶすこともできます。

重要

プライバシーが懸念される場合は、この機能を使用しないでください。 次に生成された GUID の値を推測し、そのため、その GUID に関連付けられているデータにアクセスできます。

NEWSEQUENTIALIDは、いくつかのバイト シャッフルが適用された Windows UuidCreateSequential 関数のラッパーです。

警告

UuidCreateSequential関数にはハードウェアの依存関係があります。 SQL Server, 、データベース (包含データベースの場合) などは、他のコンピューターに移動すると、連続した値のクラスターを開発できます。 Azure SQL Database と Always On を使用すると、データベースが別のコンピューターにフェールオーバーした場合に、シーケンシャル値のクラスターが開発される可能性があります。

Transact-SQL 構文表記規則

構文

NEWSEQUENTIALID ( )

戻り値の型

uniqueidentifier

注釈

NEWSEQUENTIALIDは、DEFAULT 型のテーブル列に対する制約でのみ使用できます。 例:

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

NEWSEQUENTIALID式でDEFAULTを使用する場合、他のスカラー演算子と組み合わせることはできません。 たとえば、次のコードを実行することはできません。

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

この例で、myfunction() は、uniqueidentifier 値を受け入れて返すユーザー定義スカラー関数です。

NEWSEQUENTIALID はクエリで参照できません。

NEWSEQUENTIALIDを使用して GUID を生成し、インデックスのリーフ レベルでページ分割とランダム IO を減らすことができます。

NEWSEQUENTIALIDを使用して生成された各 GUID は、そのコンピューター上で一意です。 NEWSEQUENTIALIDを使用して生成された GUID は、ソース コンピューターにネットワーク カードがある場合にのみ、複数のコンピューターで一意です。