2010-09-01 73 views
2

我需要找出使用我的sql服務器的所有應用程序。查找哪些應用程序使用Profiler跟蹤應用程序名稱列來訪問我的服務器

我使用Profiler跟蹤做到這一點(如果有另一種方式做到這一點,我將不勝感激)

在探查我使用的是重播模板,看跟蹤結果後,我看到有一個名爲應用程序名稱的列,我想知道是否有一種方法可以獲得不同的結果(該蹤跡位於.trc文件中)。

(?順便說是這應該是在計算器或serverfault張貼)

感謝, 加布裏埃爾

回答

3

試試這個:

SELECT DISTINCT ApplicationName 
FROM ::fn_trace_gettable('C:\YourFolder\YourTraceFile.trc', DEFAULT) t 
+0

感謝@ 8KB,那果然奏效。有沒有辦法只隔離非SQL應用程序(如工作,代理等)? – 2010-09-02 12:59:25

+1

@Gabriel - 如果你知道你希望在結果中看到(或看不到)的名字,你可以在語句中添加一個WHERE子句(即WHERE ApplicationName LIKE'%YourApp%') – 8kb 2010-09-02 16:44:37

+0

喜歡排除SQL 2000應用程序的sqloem(企業管理器),但事情是我不知道什麼是SQL應用程序。謝謝@ 8kb – 2010-09-03 13:34:31

1

實際上,你可以從內部做的權利Profiler在SQL Server 2008.

用以下兩個事件創建跟蹤:

  • 安全審覈:審覈登錄
  • 安全審計:現有的連接

對於這兩個事件,捕獲以下欄目:

  • 事件類
  • 應用程序名稱
  • SPID(必填)
  • 事件子類

向Event Subclass添加一個過濾器,將其限制爲值1.此過濾器將只捕獲非集中登錄。這應該會爲您提供所有現有連接以及在運行跟蹤期間發生的任何新登錄。

接下來,在組織列中,將應用程序名稱移至「組」部分。現在將按應用程序名稱對所有結果進行分組。

這是一個非常輕量級的跟蹤,如果將其限制爲僅適用於這些事件並應用過濾器,則不應該在服務器上放置太多(如果有)負載。

(我敢肯定,以前的版本相同的方式工作。我只是沒有一個在我面前來測試。)

相關問題