追蹤旗標 (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 就會將資料列或頁面鎖定擴大至資料表 (或資料分割) 鎖定:
如果同時設定了追蹤旗標 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 |
限制錯誤訊息中傳回的資訊量。如需詳細資訊,請參閱<中繼資料可見性組態>。 範圍:只限全域 |
4616 |
讓應用程式角色可以看見伺服器層級的中繼資料。在 SQL Server 中,應用程式角色不能存取本身資料庫之外的中繼資料,因為應用程式角色與伺服器層級主體沒有關聯。這是和舊版 SQL Server 不同的一項行為變更。設定這個全域旗標可停用新限制,使應用程式角色可以存取伺服器層級的中繼資料。 範圍:只限全域 |
6527 |
在 CLR 整合中第一次發生記憶體不足的例外狀況時停用記憶體傾印的產生。依預設,在 CLR 中第一次發生記憶體不足的例外狀況時,SQL Server 會產生小型的記憶體傾印。追蹤旗標的行為如下:
範圍:只限全域 |
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 中對於 Database Engine 的突破性變更>。
範例
下列範例利用 DBCC TRACEON 將追蹤旗標 3205 設為開啟。
DBCC TRACEON (3205,-1)