Sql-Server

在 SQL Server 中查找新跟踪標誌的方法

  • August 8, 2020

那裡有很多跟踪標誌。有些是有據可查的,有些沒有,還有一些在 2016 版本中找到了預設行為狀態。除了官方支持渠道、微軟員工等,還有哪些方法可以找到新的跟踪標誌?

我在這里這裡閱讀了 Aaron Bertrand 最近的幾篇文章,但沒有發現任何關於新跟踪標誌的資訊。

我將 mssqlsystemresource 的數據和日誌文件複製到了一個新位置,並像普通數據庫一樣附加它以瀏覽系統表和視圖,但沒有立即發現任何東西。我考慮獲取已知跟踪標誌的列表,並遍歷不在該列表中的數字,以查看 DBCC TRACEON 允許哪些,但想先在這裡問這個問題。

假設啟用它們的 DBCC 命令必須使用某些資源簽入以確保跟踪標誌有效,它會到達哪裡?是否有包含列表的 .dll 或其他系統文件?

我知道這個問題覆蓋了廣泛的網路,但促使這一點的原因是閱讀了具有特定預期行為的跟踪標誌以及 2016 年的一項新功能,該功能沒有描述的效果。我最初的想法是,也許這些數字以某種方式被轉置了,比如 7129 變成了 7219。我希望得到一個範圍內的有效跟踪標誌列表,比如 7000-7999,以查找排列。將它們全部測試為 DBCC TRACEON 標誌和啟動參數將是一件非常麻煩的事情,再加上針對特性行為測試結果。

除了詢問或從文章/幻燈片/等中獲取列表之外,您無法找到列表。該列表僅存在於程式碼中,在標頭檔中有效的跟踪標誌號映射到 C++ 程式碼中的大列舉中的名稱,然後在其餘程式碼中使用這些名稱。

正如 Aaron 所說,您可以啟用任何跟踪標誌編號,如果它不執行任何操作,或者您不執行與跟踪標誌相關的功能,您將不會注意到任何行為差異。

DBCC TRACEON不檢查任何內容 - 因為沒有哪些數字有效或無效的執行時列表 - 它只是在為該連接/全域設置了哪些標誌的點陣圖中啟用該跟踪標誌號。

進行有效性檢查的問題在於,它會暴露哪些跟踪標誌是有效的,從而允許它們被發現。這樣,“有效列表”就被有效地混淆了,這正是 SQL 團隊想要的。

關於 Kin 在 SQL Server 應該有的評論中的建議select * from sys.available_trace_flags- 是和否。有許多對性能非常有害的跟踪標誌,並且僅在產品支持的指導下調試問題時需要,但 SQL Server 可以列出“安全”標誌。

引用自:https://dba.stackexchange.com/questions/141092