KB974006-SQL Server query 優化程式的跟蹤標誌4199服務模型

簡介

SQL server 2000 Service Pack 3 (SP3)之後的 Microsoft SQL Server 版本會將大部分的熱修復程式以預設的狀態提供給查詢最佳化工具,以防止現有的生產客戶看到可能會造成效能退化的預期方案變更。 首先,每個修復程式都是以個別的追蹤標誌來傳送。 在稍後,此做法已變更,因此大多數旗標都已合併在單一追蹤標記(4199)之下。 這個新的做法是在多個版本(從下列更新開始)中啟動:

  • SQL Server 2005 Service Pack 3 (SP3)累加更新6

  • SQL Server 2008 Service Pack 1 (SP1)累計更新套件7

  • SQL Server 2008 R2 (RTM)

在未來版本中,會使用追蹤標記4199來收集本來要成為預設值的修正程式,而在目前的表單中,對於修正不是預設為開啟的情況,則會使用其他追蹤旗標。 從 SQL Server 2016 RTM 開始,系統會使用 [資料庫 COMPATIBILITY_LEVEL] 設定,以預設啟用追蹤標誌4199相關的熱修復程式。 本文將說明針對 SQL Server 2016 和更新版本提供方案影響的修復程式的結構與原則。

其他相關資訊

在 SQL Server 2016 中,對於舊版 SQL Server 所做的追蹤標誌4199修復程式,在沒有啟用追蹤4199旗標的 [資料庫 COMPATIBILITY_LEVEL 130] 下,即會啟用。 使用 [130 相容性等級] 時,會使用追蹤標誌4199來針對資料庫發佈任何未來的 SQL Server 2016 修正程式。 由於只對查看特定效能問題的客戶建議使用追蹤標誌4199,因此建議您在它們將資料庫移轉到最新的相容性等級之後,再移除追蹤旗標4199,因為可能不會對您的應用程式施加預期的方案效能變更,4199因此可能會在生產系統上導致意外的規劃效能變更。 這表示針對特定產品發行所支援的每個相容性層級,都會啟用不同的追蹤標記4199修復程式。 最近的相容性等級已在追蹤標誌4199下啟用所有先前的修正程式。這表示將資料庫升級至最新的相容性等級,並移除追蹤標記4199仍能讓您在資料庫升級之前利用的所有修正程式,而不只是新的修正程式。如果日後客戶遇到查詢效能問題,請嘗試啟用資料庫範圍選項 QUERY_OPTIMIZER_HOTFIXES 或查詢提示ENABLE_QUERY_OPTIMIZER_HOTFIXES ,以判斷問題是否已解決。請參閱有關QUERY_OPTIMIZER_HOTFIXES的檔。

注意 根據預設,在 SQL Server 2016 中建立的資料庫會使用相容性層級130,並已啟用新的優化程式邏輯。 這個模型的主要優點是,它會減少升級程式期間生產系統的風險。 此方法會將新的主要版本 SQL Server 安裝從自動啟用所有新的查詢處理器變更中分離。 因為主要版本升級會變更檔案格式,而且不可逆,所以最好是使用 COMPATIBILITY_LEVEL 設定,因為這可讓客戶在升級期間發現意外的規劃效能問題時,快速降級。 如果客戶發現意外的方案變更,而該變更會封鎖應用程式升級,客戶可以使用「查詢儲存區」強制執行預先規劃,或透過 Microsoft 客戶支援來協助問題,以提供因應措施或修補程式,來減輕情況。 當所有問題都緩解時,可以繼續進行升級。 客戶應該將這項功能整合至 SQL Server 2016 的升級規劃。 下表說明從 SQL Server 2016 開始追蹤標誌4199的運作方式的模型。

設定

SQL 相容性等級

追蹤旗標4199

SQL Server 2016 RTM 之前的優化程式修正程式

SQL Server 2016 RTM 之後的優化程式修正程式

sr-1.

120

禁止

禁止

2.

120

已啟用

禁止

3.

130

由相容性等級啟用

禁止

4.

130

由相容性等級啟用

由相容性等級啟用

注意: 針對新升級至 SQL Server 2016 的客戶,建議您設定 [no. 3]。 針對 SQL Server 2016 之後的主要版本,Microsoft 方案會繼續針對優化程式修正程式使用此服務模型。 根據預設,或每個版本,將會在下一個相容性層級啟用來自先前發行的任何 trace 標誌4199修復程式。 這表示,在客戶遷移到最新相容性層級之後,我們會將追蹤標誌4199停用。 較新的熱修復程式會使用追蹤標記4199來針對必須在應用程式中啟用這些特定修復程式的客戶啟用修正程式。 建議客戶在應用程式升級至最新相容性層級之後停用追蹤標記4199,以避免在應用程式中意外啟用不預期的未來優化程式變更。 升級到最新的相容性等級並移除追蹤標記4199仍能讓您在升級之前利用工作負載的所有修正程式,而不是新的修正程式。

注意 雖然在追蹤標誌4199下啟用了許多優化程式修復程式,但有些會使用其他的追蹤標記。 在未來的版本中,追蹤標誌4199以往會受到廣泛適用且預設可能成為啟用的追蹤標記。 在修補程式中,您可以使用替代的追蹤標誌,這些條件只是少數客戶,修正可能會造成其他類型的應用程式的效能衰退,或內部功能在準備好讓每個人都能成為啟用狀態的地方。 Microsoft 會視需要繼續使用其他追蹤旗標來為產品服務。 注意 本文主要針對在最新產品相容性層級釋放追蹤旗標4199熱修復程式的模型。 (在發佈時,這是 SQL Server 2016。) 優化程式修正程式可能會在舊版的 SQL Server 版本或 SQL Server 2016 的較低相容性層級(120或之前)發行。 Microsoft 會評估每個案例,並決定是否要使用追蹤標記4199或不同的追蹤旗標。 因為當您將移動移至較新的相容性層級時,也會啟用非熱修復變更,因此升級期間不會發生任何方案變更(含或不含 trace 標誌4199)的特定承諾。 客戶必須針對產品應用程式仔細測試相容性等級的變更,而且如果有方案選擇相關的效能問題,也應該使用緩解技術(例如查詢存放區)。 針對參考,下表列出了在引入追蹤標記4199之前,用於查詢處理器熱修復程式的追蹤旗標。

Microsoft 知識庫文章

追蹤旗標

318530

4101

940128

4102

919905

4103

920346

4104

920347

4105

922438

4106

923849

4107

926024

4108

926773

4109

933724

4110

934065

4111

946793

4115

950880

4116

948445

4117

942659

4119

953948

4120

942444

4121

946020

4122

948248

4124

949854

4125

959013

4126

953569

4127

955694 957872

4128

958547

4129

956686

4131

958006

4133

960770

4135*

SQL Server 2005

此問題的修正程式是在 SQL Server 2005 的累積更新6(Service Pack 3)中第一次發行。如需此累積更新套件的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:

974648 SQL Server 2005 累積更新套件 6 Service Pack 3注意: 因為組建是累加的,所以每個新的修正程式版本都包含先前 SQL Server 2005 修正版本中所包含的所有修復程式及所有安全性修正程式。 我們建議您考慮套用包含此熱修復程式的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:

960598 在發行 SQL Server 2005 Service Pack 3 之後發行的 SQL Server 2005 組建Microsoft SQL Server 2005 修復程式是針對特定的 SQL Server service pack 建立的。 您必須將 SQL Server 2005 Service Pack 3 修復程式套用至 SQL Server 2005 Service Pack 3 的安裝。 根據預設,SQL Server service pack 中提供的任何熱修復程式都包含在下一個 SQL Server service pack 中。

SQL Server 2008

此問題的修正程式是在累積更新7中第一次發行。如需如何取得此 SQL Server 2008 累積更新套件的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:

973601 SQL Server 2008 的累積更新套件7注意: 因為組建是累加的,所以每個新的修正程式版本都包含先前 SQL Server 2008 修正版本中所包含的所有修復程式及所有安全性修正程式。 我們建議您考慮套用包含此熱修復程式的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:

956909 在發行 SQL Server 2008 之後發行的 SQL Server 2008 組建

SQL Server 2008 SP1

此問題的修正程式是在 SQL Server 2008 Service Pack 1 的累積更新7中第一次發行。如需此累積更新套件的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:

979065 SQL Server 2008 的累積更新套件 7 Service Pack 1注意: 因為組建是累加的,所以每個新的修正程式版本都包含先前 SQL Server 2008 修正版本中所包含的所有修復程式及所有安全性修正程式。 我們建議您考慮套用包含此熱修復程式的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:

970365 在發行 SQL Server 2008 Service Pack 1 之後發行的 SQL Server 2008 組建Microsoft SQL Server 2008 修復程式是針對特定的 SQL Server service pack 建立的。 您必須將 SQL Server 2008 Service Pack 1 修補程式套用至 SQL Server 2008 Service Pack 1 的安裝。 根據預設,SQL Server service pack 中提供的任何熱修復程式都包含在下一個 SQL Server service pack 中。

SQL Server 2008 R2

在 SQL Server 2008 R2 的發行版本本中,不小心會從可由-T4199 控制的追蹤旗標清單中忽略 trace 標誌4135。 不過,這已在 SQL Server 2008 R2 的累積更新1中修正。 因此,對於此組建以及 SQL Server 2005 和 SQL Server 2008 支援的版本,-T4199 將能滿足本文中所列的這項和其他追蹤標記。

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 軟體更新所使用的標準術語說明

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Insiders

Was this information helpful?

Thank you for your feedback!

Thank you for your feedback! It sounds like it might be helpful to connect you to one of our Office support agents.

×