追蹤旗標 (Transact-SQL)

更新: 2007 年 9 月 15 日

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

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

ms188396.note(zh-tw,SQL.90).gif附註:
在未來的 SQL Server 版本中,不一定支援追蹤旗標行為。
追蹤旗標 描述

260

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

範圍:全域或工作階段

1204

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

範圍:只限全域

1211

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

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

如果同時設定了追蹤旗標 1211 和 1224,則 1211 的優先順序高於 1224。不過,由於追蹤旗標 1211 在所有情況下 (甚至在記憶體不足時) 都會避免擴大情況發生,所以我們建議您使用 1224。這樣在同時使用許多鎖定時,有助於防止「鎖定不足」錯誤的發生。

範圍:全域或工作階段

1222

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

範圍:只限全域

1224

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

  • Database Engine 所用記憶體的 40%,不包括使用 Address Windowing Extension (AWE) 的記憶體配置。只有當 sp_configurelocks 參數設為 0 時,這個條件才適用。
  • 使用 sp_configurelocks 參數設定之鎖定記憶體的 40%。如需詳細資訊,請參閱<設定伺服器組態選項>。

如果同時設定了追蹤旗標 1211 和 1224,則 1211 的優先順序高於 1224。不過,由於追蹤旗標 1211 在所有情況下 (甚至在記憶體不足時) 都會避免擴大情況發生,所以我們建議您使用 1224。這樣在同時使用許多鎖定時,有助於防止「鎖定不足」錯誤的發生。

範圍:全域或工作階段

2528

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

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

不過,停用平行檢查可能會使整體資料庫效能降低。降低平行處理原則的程度,會增加必須掃描的交易記錄量。這又會進一步增加 tempdb 空間的需求,且會使 DBCC 完成檢查所需要的時間,非線性地增加。如果在啟用 TABLOCK 功能且平行處理原則設為關閉的情況下執行 DBCC,資料表的鎖定時間可能會加長。

範圍:全域或工作階段

3205

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

範圍:全域或工作階段

3625

限制錯誤訊息中傳回的資訊量。如需詳細資訊,請參閱<中繼資料可見性組態>。

範圍:只限全域

4616

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

範圍:只限全域

7806

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

範圍:只限全域

備註

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

適用下列規則:

  • 全域追蹤旗標必須全域啟用,否則追蹤旗標就沒有效果。我們建議您利用 -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 2005 中,您必須全域啟用旗標,因為在死結監視執行緒中看不到工作階段層級旗標。

如需有關行為變更的詳細資訊,請參閱<SQL Server 2005 中對於 Database Engine 的突破性變更>。

範例

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

DBCC TRACEON (3205,-1)

請參閱

參考

資料類型 (Transact-SQL)
DBCC INPUTBUFFER (Transact-SQL)
DBCC OUTPUTBUFFER (Transact-SQL)
DBCC TRACEOFF (Transact-SQL)
DBCC TRACEON (Transact-SQL)
DBCC TRACESTATUS (Transact-SQL)
EXECUTE (Transact-SQL)
SELECT (Transact-SQL)
SET NOCOUNT (Transact-SQL)

說明及資訊

取得 SQL Server 2005 協助

變更歷程記錄

版本 歷程記錄

2007 年 9 月 15 日

變更的內容:
  • 更正追蹤旗標 1224 的範圍資訊。

2006 年 4 月 14 日

新增內容:
  • 新增追蹤旗標 7806 的描述。
  • 新增有關追蹤旗標 1224 優先順序高於 1211 的詳細資訊。
  • 新增每個追蹤旗標的範圍資訊。
  • 新增行為變更。

2005 年 12 月 5 日

新增內容:
  • 新增追蹤旗標 4616 和 3625 的描述。