対象者:SQL Server 2016 (13.x) およびそれ以降のバージョン
Azure SQL Database
Azure SQL Managed Instance
SQL Database in Microsoft Fabric
時間テーブルでは、システムは複数の整合性チェックを行います。 これらのチェックは、スキーマが時間的要件を満たしていること、データの整合性を確保し、一貫性を保つことを保証します。
DBCC CHECKCONSTRAINTS文は時間的なチェックも提供しています。
システムの一貫性のチェック
SYSTEM_VERSIONING を ON に設定する前に、履歴テーブルと現行テーブルに対し、一連のチェックが実行されます。 これらのチェックはスキーマチェックとデータチェック(ヒストリーテーブルが空でなければ)に分類されます。 また、システムは実行時の整合性チェックも行います。
スキーマ チェック
テーブルを作成または変更して時間テーブルにすると、システムは以下の要件を満たしていることを確認します。
現在の表と履歴表の両方で、名前と列数は同じです。
データ型は、現在のテーブルと履歴テーブルの各列で一致します。
期間列が
NOT NULLに設定されています。現行テーブルには主キーの制約がありますが、履歴テーブルには主キーの制約がありません。
履歴テーブルに、
IDENTITY列が定義されていません。履歴テーブルにトリガーが定義されていません。
履歴テーブルに外部キーが定義されていません。
履歴テーブルにテーブルまたは列の制約が定義されていません。 ただし、履歴テーブルで既定の列値は許可されています。
履歴テーブルが、読み取り専用のファイル グループに保存されていません。
履歴テーブルに、変更の追跡や変更データ キャプチャの構成がありません。
データ整合性チェック
SYSTEM_VERSIONING が ON に設定される前、システムは任意のデータ操作言語 (DML) 操作の一環として、ValidTo >= ValidFrom のチェックを実行します。
既存の履歴テーブルへのリンクを作成する際に、データの整合性チェックを選択することができます。 このデータ一貫性チェックにより、既存のレコードが重複せず、すべてのレコードが時間的要件を満たしていることを保証します。 データ一貫性チェックはデフォルトで動作します。 現在テーブルと履歴テーブル間のデータが同期していない可能性がある場合は、データの整合性チェックを行います。例えば、すでに履歴データを含む既存の履歴テーブルを組み込む場合にこれを行う。
Warnung
システムクロックの手動変更は、重複条件(すなわちレコードの終了時刻が開始時刻より小さいかどうか)を防ぐランタイムデータ一貫性チェックが失敗するため、予期せぬ故障を引き起こします。
DBCC CHECKCONSTRAINTS を使用する
DBCC CHECKCONSTRAINTS コマンドには、テンポラル データの一貫性チェックが含まれています。 詳細については、「DBCC CHECKCONSTRAINTS」を参照してください。