時態表系統一致性檢查

適用於: SQL Server 2016 (13.x) 和更新版本 Azure SQL DatabaseAzure SQL 受控執行個體Microsoft Fabric 中的 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>。