變更資料庫相容性層級並使用查詢存放區

適用於:SQL Server - 僅限 Windows

在 SQL Server 2016 (13.x) 和更新版本中,某些變更只有在資料庫相容性層級變更之後才會啟用。 有數種原因可以完成這項作業:

  • 由於升級是單向作業 (無法將檔案格式降級),因此,將新功能的啟用與資料庫內的個別作業區隔開來有其重要性。 能夠將設定還原為先前的資料庫相容性層級。 新的模型可減少必須在中斷期間發生的事項數目。

  • 查詢處理器的變更會有複雜的影響。 即使對系統進行「良好」變更對多數工作負載而言可能有益,但可能造成其他工作負載之重要查詢發生無法接受的迴歸。 將此邏輯與升級程序區隔可讓功能 (例如查詢存放區) 快速降低計畫選擇迴歸,或甚至在生產伺服器中予以完全避免。

附加或還原資料庫時以及就地升級之後,SQL Server 2017 (14.x) 預期會有下列行為:

  • 如果使用者資料庫的相容性層級在升級前為 100 或更高層級,則在升級後仍會保持相同。
  • 如果使用者資料庫在升級前的相容性層級為 90,則在升級後的資料庫中,相容性層級會設定為 100,這是 SQL Server 2017 (14.x) 支援的最低相容性層級。
  • tempdbmodelmsdb 和 Resource 資料庫的相容性層級會在升級之後設定為目前相容性層級。
  • master 系統資料庫會繼續保有升級前的相容性層級。

啟用新查詢處理器功能的升級程序與產品的發行後服務模型有關。 其中部分修正是在追蹤旗標 4199 下所發行。 需要修正的客戶可以選擇那些修正,而不會對其他客戶造成非預期的迴歸。 查詢處理器 Hotfix 的發行後服務模型記載在 這裡。 從 SQL Server 2016 (13.x) 開始,移到新的相容性層級表示不再需要追蹤旗標 4199,因為現在預設會在最新相容性層級中啟用那些修正。 因此,在升級過程中,務必在升級流程完成之後確認並未啟用 4199。

注意

如果適用,仍需追蹤旗標 4199,以啟用在 RTM 後發行的任何新查詢處理器修正。

如需將查詢處理器程式碼升級至最新版,建議遵循以下工作流程,其說明請參閱查詢存放區使用案例的在升級至較新 SQL Server 期間保持效能穩定性一節

Diagram showing the recommended workflow for upgrading the query processor to the latest version of the code.

從 SQL Server Management Studio v18 開始,可以使用 [查詢調整小幫手] 引導使用者完成建議的工作流程。 如需詳細資訊,請參閱使用查詢調整小幫手來升級資料庫

另請參閱