追蹤旗標 (Transact-SQL)

追蹤旗標用來暫時設定特定伺服器性質,或關閉特定行為。例如,如果在啟動 SQL Server 執行個體時,設定追蹤旗標 3205,就會停用磁帶機的硬體壓縮。追蹤旗標經常用來診斷效能問題,或偵錯預存程序或複雜電腦系統。

下表列出並描述 SQL Server 中可用的追蹤旗標。

[!附註]

在未來的 SQL Server 版本中,不一定支援追蹤旗標行為。

追蹤旗標

說明

260

列印擴充預存程序動態連結程式庫 (DLL) 的版本控制相關資訊。如需有關 __GetXpVersion() 的詳細資訊,請參閱<建立擴充預存程序>。

範圍:全域或工作階段

1204

傳回參與死結之鎖定的資源和類型,以及目前受影響的命令。

範圍:只限全域

1211

停用以記憶體壓力或鎖定個數為基礎的鎖定擴大。SQL Server Database Engine 不會將資料列或頁面鎖定擴大到資料表鎖定。

使用這個追蹤旗標可能產生大量鎖定。這可能會降低 Database Engine 的效能,或因記憶體不足而造成 1204 錯誤 (無法配置鎖定資源)。如需詳細資訊,請參閱<鎖定擴大 (Database Engine)>。

如果同時設定了追蹤旗標 1211 和 1224,將會優先採用 1211。但是,由於追蹤旗標 1211 會在每一個情況下防止鎖定擴大 (即使是在記憶體壓力下),所以建議您最好使用 1224。如此可避免在使用許多鎖定時,發生「鎖定不足」錯誤。

範圍:全域或工作階段

1222

以不符合任何 XSD 結構描述的 XML 格式來傳回參與死結之鎖定的資源和類型,以及目前受影響的命令。

範圍:只限全域

1224

停用以鎖定個數為基礎的鎖定擴大。不過,記憶體壓力仍然可以啟動鎖定擴大。如果鎖定物件使用的記憶體數量超出下列其中一個條件,Database Engine 就會將資料列或頁面鎖定擴大至資料表 (或資料分割) 鎖定:

  • Database Engine 所用記憶體的 40%,不包括使用 Address Windowing Extension (AWE) 的記憶體配置。只有當 sp_configurelocks 參數設為 0 時,這個條件才適用。

  • 使用 sp_configurelocks 參數設定之鎖定記憶體的 40%。如需詳細資訊,請參閱<設定伺服器組態選項>。

如果同時設定了追蹤旗標 1211 和 1224,將會優先採用 1211。但是,由於追蹤旗標 1211 會在每一個情況下防止鎖定擴大 (即使是在記憶體壓力下),所以建議您最好使用 1224。如此可避免在使用許多鎖定時,發生「鎖定不足」錯誤。

附註附註
您也可以使用 ALTER TABLE 陳述式的 LOCK_ESCALATION 選項來控制鎖定擴大到資料表或 HoBT 層級的資料粒度。

範圍:全域或工作階段

2528

利用 DBCC CHECKDB、DBCC CHECKFILEGROUP 和 DBCC CHECKTABLE 來停用物件的平行檢查。依預設,查詢處理器會自動判斷平行處理原則的程度。最大平行處理原則程度的設定方式與平行查詢相同。如需詳細資訊,請參閱<max degree of parallelism 選項>。

平行 DBCC 通常應該保留啟用狀態。對 DBCC CHECKDB 而言,查詢處理器會在檢查每份資料表或資料表批次的情況下,重新評估和自動調整平行處理原則。有時候,可能會在伺服器幾乎閒置的情況下開始檢查。如果管理員知道在檢查完成之前,負載會增加,他可能會想手動降低或停用平行處理原則。

停用 DBCC 的平行檢查可能會造成 DBCC 花上更長時間來完成,而且如果在啟用 TABLOCK 功能且平行處理原則設為關閉的情況下執行 DBCC,資料表的鎖定時間可能會加長。

範圍:全域或工作階段

3205

依預設,如果磁帶機支援硬體壓縮,DUMP 或 BACKUP 陳述式就會使用它。當使用這個追蹤旗標時,您可以停用磁帶機的硬體壓縮。當您要與其他不支援壓縮的站台或磁帶機交換磁帶時,這非常有用。

範圍:全域或工作階段

3226

根據預設,每個成功的備份作業都會在 SQL Server 錯誤記錄檔和系統事件記錄檔中加入一個項目。如果您經常建立記錄備份,這些成功訊息可能會快速累積,因而產生龐大的錯誤記錄檔,讓您難以尋找其他訊息。

透過這個追蹤旗標,您可以隱藏這些記錄項目。如果您正執行經常記錄備份,而且沒有任何指令碼相依於這些項目,這樣做就會很有用。

3608

防止 SQL Server 自動啟動並復原任何資料庫,但 master 資料庫除外。存取時,將會啟動並復原資料庫。但是,某些功能 (例如快照集隔離和讀取認可的快照集) 可能無法運作。請針對移動系統資料庫移動使用者資料庫使用。請勿在一般作業期間使用。

3625

使用 '******' 來遮罩某些錯誤訊息的參數,藉以限制傳回給非系統管理員 (sysadmin) 固定伺服器角色成員之使用者的資訊量。這樣做有助於避免洩漏機密資訊。

範圍:只限全域

4199

控制之前在多個追蹤旗標之下所做的多個查詢最佳化工具變更。如需詳細資訊,請參閱這個 Microsoft 支援文件 (機器翻譯)。

範圍:全域或工作階段

4616

讓應用程式角色可以看見伺服器層級的中繼資料。在 SQL Server 中,應用程式角色不能存取本身資料庫之外的中繼資料,因為應用程式角色與伺服器層級主體沒有關聯。這是和舊版 SQL Server 不同的一項行為變更。設定這個全域旗標可停用新限制,使應用程式角色可以存取伺服器層級的中繼資料。

範圍:只限全域

6527

在 CLR 整合中第一次發生記憶體不足的例外狀況時停用記憶體傾印的產生。依預設,在 CLR 中第一次發生記憶體不足的例外狀況時,SQL Server 會產生小型的記憶體傾印。追蹤旗標的行為如下:

  • 如果這是用來當做啟動追蹤旗標,則絕不會產生記憶體傾印。不過,如果使用了其他的追蹤旗標,就可能產生記憶體傾印。

  • 如果在執行的伺服器上啟用這個追蹤旗標,則不會從該點開始自動產生記憶體傾印。不過,如果因為在 CLR 中發生記憶體不足的例外狀況而已經產生記憶體傾印,這個追蹤旗標就不會有任何效果。

範圍:只限全域

7806

在 SQL Server Express 上啟用專用管理員連接 (DAC)。依預設,SQL Server Express 上不會保留任何 DAC 資源。如需詳細資訊,請參閱<使用專用管理員連接>。

範圍:只限全域

備註

在 SQL Server 中有兩種類型的追蹤旗標:工作階段和全域。工作階段追蹤旗標用於某個連接,而且只會在該連接顯示出來。全域追蹤旗標是設在伺服器層級,只要是該伺服器上的連接,都看得到它們。某些旗標只能啟用為全域旗標,某些則可以啟用為全域或工作階段範圍。

適用下列規則:

  • 全域追蹤旗標必須全域啟用,否則追蹤旗標就沒有效果。我們建議您利用 -T 命令列選項,在啟動時啟用全域追蹤旗標。

  • 如果追蹤旗標具有全域或工作階段的範圍,可以使用適當的範圍加以啟用。以工作階段層級啟用的追蹤旗標絕不會影響其他工作階段,而且當開啟該工作階段的 SPID 登出時,該追蹤旗標的效果也隨之消失。

請利用下列方法之一,將追蹤旗標設為開啟或關閉:

  • 使用 DBCC TRACEON 和 DBCC TRACEOFF 命令。

    例如,DBCC TRACEON 2528:若要全域啟用追蹤旗標,請利用 -1 引數使用 DBCC TRACEON:DBCC TRACEON (2528, -1)。若要關閉全域追蹤旗標,請利用 -1 引數使用 DBCC TRACEOFF。

  • 利用 -T 啟動選項來指定應該在啟動期間設定追蹤旗標。

    -T 啟動選項會全域啟用追蹤旗標。您不能利用啟動選項啟用工作階段層級的追蹤旗標。如需有關啟動選項的詳細資訊,請參閱<使用 SQL Server 服務啟動選項>。

請利用 DBCC TRACESTATUS 命令來判斷目前有哪些旗標在使用中。

行為變更

在 SQL Server 2000 中,單靠 DBCC TRACEON (1204) 即可啟用向錯誤記錄檔報告死結的功能。在 SQL Server 2008 中,您必須全域啟用旗標,因為在死結監視執行緒中看不到工作階段層級旗標。

如需有關行為變更的詳細資訊,請參閱<SQL Server 2008 R2 中對於 Database Engine 的重大變更>。

範例

下列範例利用 DBCC TRACEON 將追蹤旗標 3205 設為開啟。

DBCC TRACEON (3205,-1)

變更記錄

更新的內容

已新增追蹤旗標 4199。