テンポラル テーブルのシステム整合性チェック

対象者:SQL Server 2016 (13.x) およびそれ以降のバージョン Azure SQL DatabaseAzure SQL Managed InstanceSQL Database in Microsoft Fabric

時間テーブルでは、システムは複数の整合性チェックを行います。 これらのチェックは、スキーマが時間的要件を満たしていること、データの整合性を確保し、一貫性を保つことを保証します。 DBCC CHECKCONSTRAINTS文は時間的なチェックも提供しています。

システムの一貫性のチェック

SYSTEM_VERSIONINGON に設定する前に、履歴テーブルと現行テーブルに対し、一連のチェックが実行されます。 これらのチェックはスキーマチェックとデータチェック(ヒストリーテーブルが空でなければ)に分類されます。 また、システムは実行時の整合性チェックも行います。

スキーマ チェック

テーブルを作成または変更して時間テーブルにすると、システムは以下の要件を満たしていることを確認します。

  1. 現在の表と履歴表の両方で、名前と列数は同じです。

  2. データ型は、現在のテーブルと履歴テーブルの各列で一致します。

  3. 期間列が NOT NULL に設定されています。

  4. 現行テーブルには主キーの制約がありますが、履歴テーブルには主キーの制約がありません。

  5. 履歴テーブルに、 IDENTITY 列が定義されていません。

  6. 履歴テーブルにトリガーが定義されていません。

  7. 履歴テーブルに外部キーが定義されていません。

  8. 履歴テーブルにテーブルまたは列の制約が定義されていません。 ただし、履歴テーブルで既定の列値は許可されています。

  9. 履歴テーブルが、読み取り専用のファイル グループに保存されていません。

  10. 履歴テーブルに、変更の追跡や変更データ キャプチャの構成がありません。

データ整合性チェック

SYSTEM_VERSIONINGON に設定される前、システムは任意のデータ操作言語 (DML) 操作の一環として、ValidTo >= ValidFrom のチェックを実行します。

既存の履歴テーブルへのリンクを作成する際に、データの整合性チェックを選択することができます。 このデータ一貫性チェックにより、既存のレコードが重複せず、すべてのレコードが時間的要件を満たしていることを保証します。 データ一貫性チェックはデフォルトで動作します。 現在テーブルと履歴テーブル間のデータが同期していない可能性がある場合は、データの整合性チェックを行います。例えば、すでに履歴データを含む既存の履歴テーブルを組み込む場合にこれを行う。

Warnung

システムクロックの手動変更は、重複条件(すなわちレコードの終了時刻が開始時刻より小さいかどうか)を防ぐランタイムデータ一貫性チェックが失敗するため、予期せぬ故障を引き起こします。

DBCC CHECKCONSTRAINTS を使用する

DBCC CHECKCONSTRAINTS コマンドには、テンポラル データの一貫性チェックが含まれています。 詳細については、「DBCC CHECKCONSTRAINTS」を参照してください。