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