DBCC CHECKIDENT (Transact-SQL)

 

適用対象:○SQL Server (2008 以降)×Azure SQL Database×Azure SQL Data Warehouse ×Parallel Data Warehouse

指定された SQL Server 2016 のテーブルの現在の ID 値をチェックし、必要に応じて ID 値を変更します。 ID 列の新しい現在の ID 値を手動で設定する場合に DBCC CHECKIDENT を使用することもできます。

Topic link icon Transact-SQL 構文表記規則

  
DBCC CHECKIDENT   
 (   
    table_name  
        [, { NORESEED | { RESEED [, new_reseed_value ] } } ]  
)  
[ WITH NO_INFOMSGS ]  

table_name
現在の ID 値をチェックするテーブルの名前を指定します。 指定されたテーブルには、ID 列が含まれている必要があります。 テーブル名は、ルールに準拠する必要があります識別子します。 'Person.AddressType'、または [Person.AddressType] など、2、3 部構成の名前を区切る必要があります。

NORESEED
現在の ID 値を変更しないように指定します。

RESEED
現在の ID 値を変更するように指定します。

new_reseed_value
ID 列の現在値として使用する新しい値を指定します。

WITH NO_INFOMSGS
すべての情報メッセージを表示しないようにします。

現在の ID 値に加えられる個々の修正は、指定されているパラメーターによって異なります。

DBCC CHECKIDENT コマンド加えられる ID の修正
DBCC CHECKIDENT ( table_nameNORESEED)現在の ID 値はリセットされません。 DBCC CHECKIDENT は、ID 列の現在の ID 値と現在の最大値を返します。 2 つの値が異なる場合は、エラーが発生しないよう、または連続値の一部が欠落しないように、ID 値をリセットする必要があります。
DBCC CHECKIDENT ( table_name )

または

DBCC CHECKIDENT ( table_name、RESEED)
テーブルの現在の ID 値が、ID 列に格納されている最大の ID 値より小さい場合、テーブルの現在の ID 値は ID 列の最大値にリセットされます。 後の「例外」のセクションを参照してください。
DBCC CHECKIDENT ( table_name、RESEED, new_reseed_value )現在の id 値が設定されている、 new_reseed_valueします。 行が挿入されていないテーブルにテーブルが作成された、または TRUNCATE TABLE ステートメントを使用してすべての行が削除された場合に、DBCC CHECKIDENT を実行した後に挿入される最初の行が使用する場合new_reseed_value id として。

次の行を挿入する行がテーブルに存在する場合、 new_reseed_value値。 バージョンでSQL Server 2008 R2以前で、次の行の挿入を使用してnew_reseed_value +、現在インクリメント値。

テーブルが空でない場合、ID 値に ID 列の最大値より小さな値を設定すると、次の状況のいずれかが発生する可能性があります。

-Id 列に PRIMARY KEY または UNIQUE 制約が存在する場合、生成される id 値が既存の値と競合するために、エラー メッセージ 2627 はテーブルへの後続の挿入操作で生成されます。

-PRIMARY KEY または UNIQUE 制約がない場合、重複する id 値の後続の挿入操作が発生します。

次の表に、DBCC CHECKIDENT で現在の ID 値が自動的にリセットされないときの条件と、ID 値をリセットする方法を示します。

条件リセット方法
現在の ID 値がテーブルの最大値より大きい。DBCC checkident (table_name、NORESEED) 列で、現在の最大値を決定し、その値としてを指定する、 new_reseed_value DBCC checkident (table_name、RESEED,new_reseed_value) コマンドです。

- または -

DBCC CHECKIDENT を実行 (table_name、RESEED,new_reseed_value) とnew_reseed_value非常に低い値に設定し、DBCC CHECKIDENT を実行 (table_name、RESEED) 値を修正します。
すべての行がテーブルから削除されている。DBCC checkident (table_name、RESEED,new_reseed_value) とnew_reseed_value開始値に設定します。

シード値は、テーブルに読み込まれる最初の行の ID 列に挿入される値です。 以降の行にはすべて、現在の ID 値 (テーブルまたはビューに対して生成された最後の ID 値) に増分値を加えた値が格納されます。

DBCC CHECKIDENT を使用して、次のタスクを実行することはできません。

  • テーブルまたはビューの作成時に ID 列に指定された、元のシード値を変更する。

  • テーブルまたはビュー内の既存の行にシード値を再生成する。

元のシード値を変更したり任意の既存の行にシード値を再生成したりするには、ID 列を削除し、新しいシード値を指定して作り直す必要があります。 テーブルにデータが含まれている場合、ID 番号が、指定のシード値および増分値を使用して既存の行に追加されます。 行の更新順序は保証されません。

ID 列を含むテーブルに対してオプションが指定されているかどうかにかかわらず、DBCC CHECKIDENT は、新しいシード値の指定以外のすべての操作に対して次のメッセージを返します。

Checking identity information: current identity value '<current identity value>', current column value '<current column value>'. DBCC execution completed. If DBCC printed error messages, contact your system administrator.

再シードを使用して新しいシード値を指定する DBCC CHECKIDENT を使用する場合new_reseed_value、次のメッセージが返されます。

Checking identity information: current identity value '<current identity value>'. DBCC execution completed. If DBCC printed error messages, contact your system administrator.

呼び出し元のテーブルを含むスキーマを所有かのメンバーである必要があります、 sysadmin固定サーバー ロール、 db_owner固定データベース ロール、またはdb_ddladmin固定データベース ロール。

A. 必要に応じて現在の ID 値をリセットする

次の例は、指定されたテーブルでの必要な場合に現在の id 値をリセット、AdventureWorks2012データベースです。

USE AdventureWorks2012;  
GO  
DBCC CHECKIDENT ('Person.AddressType');  
GO  

B. 現在の ID 値を報告する

次の例では、AdventureWorks2012 データベース内の指定されたテーブルの現在の ID 値を報告します。ID 値が正しくない場合でも、ID 値の修正は行いません。

USE AdventureWorks2012;   
GO  
DBCC CHECKIDENT ('Person.AddressType', NORESEED);   
GO  
  

C. 現在の ID 値を強制的に新しい値に設定する

次の例では、現在の id 値を強制的に、AddressTypeID内の列、AddressTypeテーブルに値は 10 です。 テーブルには既存の行があるため、次に挿入される行では値に 11 が使用されます。この値は、列の値に対して定義されている新しい現在の増分値に 1 を加えた値です。

USE AdventureWorks2012;  
GO  
DBCC CHECKIDENT ('Person.AddressType', RESEED, 10);  
GO  
  

ALTER TABLE (TRANSACT-SQL)
テーブル (TRANSACT-SQL) を作成します。
DBCC (TRANSACT-SQL)
IDENTITY (プロパティ) (TRANSACT-SQL)
Id 列をレプリケートします。
使用 (TRANSACT-SQL)
IDENT_SEED (TRANSACT-SQL)
IDENT_INCR (TRANSACT-SQL)

コミュニティの追加

追加
表示: