テンポラル テーブルのシステム一貫性のチェック
適用対象: SQL Server 2016 (13.x) 以降 Azure SQL DatabaseAzure SQL Managed Instance
テンポラル テーブルを使用する際、システムは、スキーマがテンポラルの要件に準拠しているか、またそのデータに一貫性がありそれが維持されるかを確認する、一貫性チェックをいくつか実行します。 また、テンポラル チェックが DBCC CHECKCONSTRAINTS
ステートメントに追加されています。
システムの一貫性のチェック
SYSTEM_VERSIONING を ON に設定する前に、履歴テーブルと現行テーブルに対し、一連のチェックが実行されます。 これらのチェックは、スキーマ チェックおよびデータ チェックにグループ化されます (履歴テーブルが空でない場合)。 また、システムではランタイムの一貫性チェックも実行されます。
スキーマのチェック
テーブルをテンポラル テーブルにするように作成または変更する場合、システムでは次の要件が満たされていることを確認します。
- 現行テーブルと履歴テーブルの双方の列名と列数が同じです。
- 現行テーブルと履歴テーブルのそれぞれの列のデータ型が一致しています。
- 期間列が NOT NULLに設定されています。
- 現行テーブルには主キーの制約がありますが、履歴テーブルには主キーの制約がありません。
- 履歴テーブルに、 IDENTITY 列が定義されていません。
- 履歴テーブルにトリガーが定義されていません。
- 履歴テーブルに外部キーが定義されていません。
- 履歴テーブルにテーブルまたは列の制約が定義されていません。 ただし、履歴テーブルで既定の列値は許可されています。
- 履歴テーブルが、読み取り専用のファイル グループに保存されていません。
- 履歴テーブルに、変更の追跡や変更データ キャプチャの構成がありません。
データ整合性チェック
SYSTEM_VERSIONING が ON に設定される前、システムは任意の DML 操作の一環として、ValidTo >= ValidFrom
のチェックを実行します。
既存の履歴テーブルへのリンクを作成する場合は、データの整合性チェックを実行することもできます。 このデータの一貫性チェックでは、既存のレコードに重複がなく、個々の各レコードでテンポラルの要件が満たされたことが確認されます。 データを実行する一貫性チェックが、既定値です。 一般に、データの一貫性チェックは、現行および履歴テーブルのデータ間に一貫性がない可能性がある、履歴データが入力された既存の履歴テーブルを組み込む場合などに実行することをお勧めします。
警告
システム クロックを手動で変更すると、重複の状態 (つまり、レコードの終了時刻が開始時刻を上回っていること) を回避する実施されるランタイム データの一貫性チェックが失敗するため、システムで予期せず障害が発生します。
DBCC CHECKCONSTRAINTS
DBCC CHECKCONSTRAINTS
コマンドには、テンポラル データの一貫性チェックが含まれています。 詳細については、「DBCC CHECKCONSTRAINTS (Transact-SQL)」を参照してください。
次のステップ
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示