時態表系統一致性檢查
適用於:SQL Server 2016 (13.x) 和更新版本 Azure SQL 資料庫 Azure SQL 受控執行個體
使用時態表時,系統會執行數個一致性檢查,以確保結構描述符合時態需求,資料一致且保持一致。 此外,DBCC CHECKCONSTRAINTS
陳述式中也提供時態性檢查。
系統一致性檢查
將 SYSTEM_VERSIONING
設為 ON
之前,會在歷程記錄資料表和目前的資料表上執行一組檢查。 這些檢查會集結到結構描述檢查和資料檢查中 (如果記錄資料表不是空的)。 此外,系統也會執行執行階段一致性檢查。
結構描述檢查
當建立或改變資料表使成為時態表時,系統會確認是否符合需求︰
目前的資料表和記錄資料表中的資料行名稱和數目是相同的。
目前的資料表和記錄資料表之間每個資料行的資料類型都相符。
期間資料行會設為
NOT NULL
。目前的資料表有主索引鍵條件約束,記錄資料表沒有主索引鍵條件約束。
歷程記錄資料表中未定義任何
IDENTITY
資料行。記錄資料表中未定義任何觸發程序。
記錄資料表中未定義任何外部索引鍵。
記錄資料表中未定義任何資料表或資料行條件約束。 不過,記錄資料表上允許預設的資料行值。
記錄資料表不是放在唯讀檔案群組中。
記錄資料表未針對變更追蹤或變更資料擷取設定。
資料一致性檢查
將 SYSTEM_VERSIONING
設為 ON
並成為任何資料操作語言 (DML) 作業的一部分之前,系統會執行下列檢查:ValidTo >= ValidFrom
建立現有記錄資料表的連結時,您可以選擇執行資料一致性檢查。 這項資料一致性檢查可確保現有的記錄沒有重疊,而且每一筆個別記錄都達到暫時需求。 預設執行資料一致性檢查。 每當目前和歷程記錄資料表之間的資料可能不同步時,則應該執行資料一致性作業。例如,在納入已填入歷史資料的現有歷程記錄資料表時。
警告
手動變更系統時鐘會導致系統意外失敗,因為可避免重疊條件 (也就是記錄的結束時間不得早於其開始時間) 執行階段資料一致性檢查會失敗。
使用 DBCC CHECKCONSTRAINTS
DBCC CHECKCONSTRAINTS
命令包含時態資料一致性檢查。 如需詳細資訊,請參閱<DBCC CHECKCONSTRAINTS>。