時態表系統一致性檢查

適用於:SQL Server 2016 (13.x) 和更新版本 Azure SQL DatabaseAzure SQL 受控執行個體

使用時態表時,系統會執行數個一致性檢查,以確保結構描述符合時態需求,資料一致且保持一致。 此外,時態檢查已新增至 DBCC CHECKCONSTRAINTS 陳述式中。

系統一致性檢查

SYSTEM_VERSIONING 設為 ON 之前,會在歷程記錄資料表和目前的資料表上執行一組檢查。 這些檢查會集結到結構描述檢查和資料檢查中 (如果記錄資料表不是空的)。 此外,系統也會執行執行階段一致性檢查。

結構描述檢查

當建立或改變資料表使成為時態表時,系統會確認是否符合需求︰

  1. 目前的資料表和記錄資料表中的資料行名稱和數目是相同的。
  2. 目前的資料表和記錄資料表之間每個資料行的資料類型都相符。
  3. 期間資料行設為 NOT NULL
  4. 目前的資料表有主索引鍵條件約束,記錄資料表沒有主索引鍵條件約束。
  5. 記錄資料表中未定義任何 IDENTITY 資料行。
  6. 記錄資料表中未定義任何觸發程序。
  7. 記錄資料表中未定義任何外部索引鍵。
  8. 記錄資料表中未定義任何資料表或資料行條件約束。 不過,記錄資料表上允許預設的資料行值。
  9. 記錄資料表不是放在唯讀檔案群組中。
  10. 記錄資料表未針對變更追蹤或變更資料擷取設定。

資料一致性檢查

SYSTEM_VERSIONING 設為 ON 並成為任何 DML 作業的一部分之前,系統會執行下列檢查:ValidTo >= ValidFrom

建立現有記錄資料表的連結時,您可以選擇執行資料一致性檢查。 這項資料一致性檢查可確保現有的記錄沒有重疊,而且每一筆個別記錄都達到暫時需求。 預設執行資料一致性檢查。 一般而言,每當目前和記錄資料表之間的資料可能不同步時 (如納入已填入歷程記錄資料的現有記錄資料表時),即應該執行資料一致性作業。

警告

手動變更系統時鐘會導致系統意外失敗,因為正在進行的避免重疊條件 (也就是記錄的結束時間不得早於其開始時間) 執行階段資料一致性檢查會失敗。

DBCC CHECKCONSTRAINTS

DBCC CHECKCONSTRAINTS 命令包含時態資料一致性檢查。 如需詳細資訊,請參閱 DBCC CHECKCONSTRAINTS (Transact-SQL)

後續步驟