

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 中設定追蹤旗標 RDS for Microsoft SQL Server
<a name="Appendix.SQLServer.CommonDBATasks.TraceFlags"></a>

SQL Server 追蹤旗標是您可以開啟或關閉的設定，以變更資料庫引擎的行為。您可以使用追蹤旗標來啟用隱藏功能、修正效能問題，或覆寫預設伺服器行為。實際上，每個追蹤旗標都會做為開啟/關閉開關，以變更 SQL Server 的預設行為。

如需 Microsoft SQL Server 中可用追蹤旗標的完整清單，請參閱 Microsoft 文件中的 [DBCC TRACEON - 追蹤旗標](https://learn.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-traceon-trace-flags-transact-sql?view=sql-server-ver17#trace-flags)。

作為受管服務， RDS for SQL Server 會限制全域伺服器層級設定。您只能透過 RDS for SQL Server [資料庫參數群組將特定追蹤旗標設定為啟動參數](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/parameter-groups-overview.html)。下表列出 中支援的追蹤旗標 RDS for SQL Server。

**重要**  
強烈建議您在生產環境中啟用追蹤旗標之前，先徹底測試和驗證。追蹤旗標對於效能調校和故障診斷很有用，但不正確的使用可能會導致不穩定、查詢計畫不佳或資源問題。


| 追蹤旗標 | 說明 | 
| --- | --- | 
| 647 | 略過 SQL Server 2012 中引入的資料驗證檢查，這可能會導致`ALTER TABLE... ADD`資料欄操作執行速度明顯變慢。 | 
| 652 | 停用頁面預先擷取掃描。啟用時，SQL Server 會提前停止將頁面載入緩衝集區。對於依賴預先擷取的查詢，這可能會降低效能。 | 
| 692 | 停用快速插入，同時將資料大量載入堆積或叢集索引 (SQL Server 2016 及更新版本支援）。 | 
| 1204 | 傳回參與死結且目前命令受影響的資源和鎖定類型。 | 
| 1211 | 根據記憶體壓力或鎖定數量停用鎖定提升。SQL Server 不會將資料列或頁面鎖定提升至資料表鎖定。 | 
| 1222 | 傳回 XML 格式的死結資訊 (1204 的增強版本）。 | 
| 1224 | 根據鎖定數量停用鎖定提升 （記憶體壓力仍然可以啟用鎖定提升）。 | 
| 1448 | 允許複寫日誌讀取器推進，而無需等待非同步次要項目確認變更。日誌讀取器仍會等待同步次要檔案處於 `SYNCHRONIZED` 狀態。它不會超過其最低確認日誌序號 (LSN)。 | 
| 2528 | 依 `DBCC CHECKDB`、 `DBCC CHECKFILEGROUP`和 停用物件的平行檢查`DBCC CHECKTABLE`。 | 
| 3654 | 用於故障診斷記憶體流失或未釋放的記憶體條件。作用中時，如果偵測到此類問題，SQL Server 會觸發宣告失敗並產生迷你傾印。傾印是由增強型追蹤所捕捉的基礎記憶體錯誤所產生，而不是來自追蹤標記本身。 | 
| 4138 | 使用 `TOP`、`IN`、 `OPTION (FAST N)`或 停用查詢的資料列目標調整`EXISTS`。這會強制 SQL Server 產生完整的計劃，而不需要資料列目標最佳化。 | 
| 4139 | 調整查詢編譯時間的長條圖，以獲得更佳的基數估算，無論前置資料欄是遞增、遞減還是固定。 | 
| 4199 | 控制先前在多個追蹤旗標下進行的多個查詢最佳化工具變更。 | 
| 4616 | 讓應用程式角色可以看到伺服器層級中繼資料。 | 
| 6527 | 在通用語言執行期 (CLR) 整合中第一次發生out-of-memory例外狀況時，停用記憶體傾印的產生。 | 
| 7745 | 防止查詢存放區在資料庫關閉期間將資料排清至磁碟。 | 
| 8285 | 修正已啟用變更資料擷取 (CDC`IndexRowScanner.cpp: m_versionStatus.IsVisible()`) 或讀取遞交快照隔離 (RCSI) 的資料庫中的宣告錯誤 ()。它透過將宣告轉換為受控錯誤訊息 (SQL Server 2022 累積更新 (CU) 6 或更新版本） 或抑制它們 (SQL Server 2019) 來防止堆疊傾印。 | 
| 8780 | 為最佳化工具提供更多時間來尋找更好的計劃。 | 
| 9432 | 停用 SQL Server 2019 CU14 的修正，該修正使用 修正平行計畫中的錯誤結果`SESSION_CONTEXT`。與追蹤標記 11042 搭配使用，以防止工作階段重設以重複使用時的存取違規傾印。 | 
| 9481 | 強制查詢最佳化工具使用舊版基數估算模型 (SQL Server 2012 及更早版本），無論資料庫相容性層級為何。替代方案：在資料庫層級，使用 `ALTER DATABASE SCOPED CONFIGURATION`；在查詢層級，使用`QUERYTRACEON`查詢提示。 | 
| 9492 | 在執行個體層級停用 `SELECT INTO`（大量插入） 操作的平行處理，以減少 的`LATCH_EX`等待`METADATA_SEQUENCE_GENERATOR`。可能會稍微降低效能，但改善整體穩定性。 | 
| 9592 | 啟用同步可用性群組的日誌串流壓縮。同步可用性群組上的日誌串流壓縮預設為停用，因為壓縮會增加延遲。啟用它可以降低複本之間的網路頻寬使用量，成本為額外的 CPU 和一些額外的延遲。適用於：SQL Server 2016 (13.0) 和更新版本。 | 
| 11024 | 在 SQL Server 2017 中，分割區資料表上增量統計資料的自動更新可能會延遲。這是因為如果沒有單一分割區超過其本機閾值，即使合併計數超過根閾值，根節點的修改計數也會重設為零。追蹤標記 11024 透過將根節點的修改計數保留為所有分割區修改的真實總和，確保及時更新統計資料來修正此問題。適用於：SQL Server 2017 CU3 和更新版本。 | 
| 11042 | 使用 修正平行計畫中的 SQL Server 2019 CU14 錯誤結果`SESSION_CONTEXT`。不過，當工作階段重設以重複使用時，此修正可能會導致存取違規傾印。解決方法：同時啟用兩個追蹤標記：追蹤標記 11042 （停用 的平行處理`SESSION_CONTEXT`) 和追蹤標記 9432 （停用原始 CU14 修正）。注意：這是最新的 SQL Server 版本中仍存在的已知問題。Microsoft 的永久修正正在未來的 CU 中等待。 | 
| 12502 | 透過停用內部部署 SQL Server 執行個體的外部授權政策來修正高`PREEMPTIVE_OS_QUERYREGISTRY`等待。適用於：SQL Server 2022 CU5\+。 | 
| 12618 | 允許自動計畫更正 (APC) 功能對相同計畫執行多個連續迴歸檢查，使其能夠在決定更正之前收集更多統計資料。適用於：SQL Server 2022 CU4 和更新版本。 | 
| 12656 | 在偵測到計畫變更後，自動計畫更正 (APC) 執行迴歸檢查之前，新增 5 分鐘的延遲。這可避免快速執行的查詢產生偏斜的結果，並考量受變更影響的長時間執行或容易逾時的查詢。適用於：SQL Server 2022 CU4\+。 | 

**注意**  
從 SQL Server 2016 Service Pack 1 (SP1) 和更新版本中，我們建議您在`USE HINT`查詢層級使用查詢提示，而不是追蹤旗標 4138 和 4139。在生產中套用此變更之前，請務必徹底測試。

**重要**  
當您使用追蹤旗標 7745 時，未壓縮的查詢存放區資料可能會在關閉期間遺失。若要立即關閉 SQL Server，請使用 `SHUTDOWN WITH NOWAIT`而非此追蹤旗標。