KB974006 - SQL Server查詢最佳化工具 Hotfix 追蹤旗標 4199 服務模型

套用到
Microsoft SQL Server 2005 Standard Edition Microsoft SQL Server 2005 Enterprise Edition Microsoft SQL Server 2005 Standard X64 Edition Microsoft SQL Server 2005 Enterprise X64 Edition Microsoft SQL Server 2005 Developer Edition Microsoft SQL Server 2005 Workgroup Edition SQL Server 2008 Standard SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Workgroup SQL Server 2008 R2 Datacenter SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Express SQL Server 2008 R2 Standard SQL Server 2008 R2 Workgroup SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Express SQL Server 2012 Standard SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Express - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use)

簡介

SQL Server 2000 Service Pack 3 (SP3 之後的 Microsoft SQL Server版本) 大部分的 Hotfix 以預設關閉狀態傳遞給查詢最佳化工具,以避免現有的正式環境客戶看到可能導致效能下降的預期計劃變更。 一開始,每個 Hotfix 都是在個別的追蹤旗標下傳遞。 後來,這種做法發生了變化,因此大多數旗標被合併在一個追蹤旗標下, (4199) 。 這項新做法是在多個版本中起始,從下列更新開始:

  • SQL Server 2005 Service Pack 3 (SP3) 累積更新 6
  • SQL Server 2008 Service Pack 1 (SP1) 累積更新套件 7
  • SQL Server 2008 R2 (RTM)

追蹤旗標 4199 是用來收集原本打算在未來版本中預設為開啟的 Hotfix,而其他追蹤旗標則用於修正程式不打算以目前形式預設為預設開啟的情況。 從 SQL Server 2016 RTM 開始,資料庫COMPATIBILITY_LEVEL設定預設會使用啟用追蹤旗標 4199 相關的 Hotfix。 本文說明如何為 SQL Server 2016 和更新版本提供影響計劃的 Hotfix 機制和原則。

更多資訊

在 SQL Server 2016 中,在未啟用追蹤旗標 4199 的資料庫COMPATIBILITY_LEVEL 130 下,將會啟用對舊版 SQL Server 所設計的追蹤旗標 4199 Hotfix。 追蹤旗標 4199 將用來使用 130 相容性層級,針對資料庫發行任何未來的 SQL Server 2016 Hotfix。 由於追蹤旗標 4199 只建議在看到特定效能問題的客戶使用,因此建議客戶在將資料庫移轉至最新的相容性層級後移除追蹤旗標 4199,因為追蹤旗標 4199 將會重複用於未來可能不適用於應用程式的修正,並可能導致生產系統上非預期的計畫效能變更。 這表示會針對特定產品版本中支援的每個相容性層級啟用不同的追蹤旗標 4199 Hotfix。 最新的相容性層級已在追蹤旗標 4199 下啟用所有先前的修正程式。 這表示將資料庫升級到最新的相容性層級並移除追蹤旗標 4199 仍可啟用資料庫升級前工作負載所利用的所有修正程式,只是不會啟用新的修正程式。 如果日後客戶遇到查詢效能問題,請嘗試在測試環境中啟用資料庫範圍選項QUERY_OPTIMIZER_HOTFIXES或查詢提示ENABLE_QUERY_OPTIMIZER_HOTFIXES,以判斷問題是否已解決。 請參閱有關 QUERY_OPTIMIZER_HOTFIXES的文件。

備註根據預設,在 SQL Server 2016 中建立的資料庫使用相容性層級 130,並已啟用新的最佳化器邏輯。

該模型的主要優點是它降低了升級過程中生產系統的風險。 這個方法會將安裝新的 SQL Server 主要版本與自動啟用所有新的查詢處理器變更分開。 由於主要版本升級會變更檔案格式,且不可還原,因此建議使用 [COMPATIBILITY_LEVEL] 設定,因為如果在升級期間發現非預期的計畫效能問題,客戶就可以快速降級。 如果客戶發現意外的計劃變更會封鎖應用程式升級,客戶可以使用查詢存放區來強制執行先前的計劃,以套用適當的計劃提示來緩解情況,或者可以透過連絡 Microsoft 客戶支援服務來緩解情況,以協助解決問題以提供因應措施或 Hotfix。 當所有問題都減輕後,升級可以繼續。 客戶應將這項功能整合到其 SQL Server 2016 的升級規劃中。

下表說明追蹤旗標 4199 如何從 SQL Server 2016 開始運作的模型。

設定 SQL 相容性層級 追蹤旗標 4199 SQL Server 2016 RTM 之前的最佳化工具 Hotfix SQL Server 2016 RTM 之後的最佳化工具 Hotfix
1. 120 關閉 已停用 已停用
2. 120 開啟 已啟用 已停用
3. 130 關閉 依相容性層級啟用 已停用
4. 130 開啟 依相容性層級啟用 依相容性層級啟用

附註:建議新升級至 SQL Server 2016 的客戶使用設定 3。

針對 SQL Server 2016 之後的主要版本,Microsoft 計畫會繼續使用此服務模型進行最佳化工具 Hotfix。 根據預設或每個版本,先前版本的任何追蹤旗標 4199 Hotfix 都會在下一個相容性層級啟用。 這表示在客戶移轉到最新的相容性層級之後,建議的狀態是停用追蹤旗標 4199。 後續的 Hotfix 會使用追蹤旗標 4199,為必須在應用程式中啟用這些特定 Hotfix 的客戶啟用修正程式。 建議客戶在應用程式升級到最新的相容性層級之後停用追蹤旗標 4199,以避免在應用程式上意外啟用未預期的未來優化器變更。 升級至最新的相容性層級並移除追蹤旗標 4199 仍可啟用升級前工作負載所利用的所有修正程式,只是不會啟用新的修正程式。

備註 雖然許多優化器 Hotfix 都是在追蹤旗標 4199 下啟用,但有些則會使用其他追蹤旗標。 追蹤旗標 4199 歷來涵蓋廣泛適用且可能在未來版本中預設啟用的追蹤旗標。 替代追蹤旗標用於 Hotfix,其中條件僅針對少數客戶、修正程式可能會導致其他類型應用程式的效能降低,或內部功能可能會在準備好可供所有人啟用之前看到變更。 Microsoft 會繼續視需要使用其他追蹤旗標來維護產品。

備註 本文著重於在最新產品的最新相容性層級上釋出追蹤旗標 4199 Hotfix 的模型。 (發佈時,本文SQL Server 2016 年。) 最佳化工具 Hotfix 可能會在較舊的市場內 SQL Server 版本上發行,或在 120 或 SQL Server 2016 之前) (較低相容性層級上發行。 Microsoft 會評估每個案例,並決定是否要使用追蹤旗標 4199 或不同的追蹤旗標。 由於當移至較新的相容性層級時,也會啟用非 Hotfix 變更,因此不保證在升級 (期間不會發生任何計畫變更,無論是否使用追蹤旗標 4199) 。 客戶應始終仔細測試生產應用程式相容性層級的變更,並且如果有計劃選擇相關的效能問題,則應使用風險降低技術,例如查詢存放區。

僅供參考,在引進追蹤旗標 4199 之前,下列追蹤旗標曾用於查詢處理器 Hotfix:

4101, 4102, 4103, 4104, 4105, 4106, 4107, 4108, 4109, 4110, 4111, 4115, 4116, 4117, 4119, 4120, 4121, 4122, 4124, 4125, 4126, 4127, 4128, 4129, 4131, 4133, 4135.

SQL Server 2012 和更新版本

追蹤旗標 4199 隨附於 SQL Server 2012 和更新版本的發行版本中。

如何啟用追蹤旗標 4199

您可以在啟動時或使用者工作階段啟用追蹤旗標 4199。 此追蹤旗標具有全域層級或工作階段層級的效果。 若要啟用追蹤旗標 4199,請使用 DBCC TRACEON 命令或使用 –T 4199 做為啟動參數。

如果使用 DBCC TRACEON\TRACEOFF,則不會重新產生新的預存程序快取計劃。 計畫可能位於沒有追蹤旗標而建立的快取中。

如需有關如何啟用或停用追蹤旗標的詳細資訊,以及全域和工作階段層級追蹤旗標的說明,請參閱《SQL Server 線上叢書》中的下列主題:

參考資料

如需有關 SQL Server 更新命名架構的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:

822499
Microsoft SQL Server 軟體更新套件的新命名架構
如需有關軟體更新術語的詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:

824684
描述 Microsoft 軟體更新所使用的標準術語說明