我們有大量不同的桌面應用程序,電子表格(1500+)等訪問SQL Server。我們希望開始登錄服務器,該服務器將盡可能多地告訴我們哪些用戶在哪些機器上正在執行什麼sql,從哪個應用程序(windows exe /進程名稱)執行。具體來說,我對機器名稱和用戶名感興趣,但希望獲得儘可能多的信息。可能確定在SQL Server(2000)上執行查詢的machine_name和windows用戶名?
這可能嗎?
重要提示:我的興趣一般,但我目前的情況是SQL Server 2000中
我們有大量不同的桌面應用程序,電子表格(1500+)等訪問SQL Server。我們希望開始登錄服務器,該服務器將盡可能多地告訴我們哪些用戶在哪些機器上正在執行什麼sql,從哪個應用程序(windows exe /進程名稱)執行。具體來說,我對機器名稱和用戶名感興趣,但希望獲得儘可能多的信息。可能確定在SQL Server(2000)上執行查詢的machine_name和windows用戶名?
這可能嗎?
重要提示:我的興趣一般,但我目前的情況是SQL Server 2000中
要檢查當前狀態:
在SQL 2000,你會看在sysprocesses
:
hostname
工作站的名稱。program_name
應用程序的名稱。
SQL 2005,你在sys.dm_exec_sessions
host_name
客戶 工作站的名稱是特定於 會話照顧。 內部會話的值爲NULL。可以爲空。program_name
發起會話的客戶端程序名稱 。對於內部會話,值 爲NULL。是 可以爲空。
要記錄這些信息,你會用SQL tracing,跟蹤SQL:BatchCompleted
和RPC:Completed
事件。跟蹤,即使在服務器端完成,也會增加大量的開銷,而且非常不可能在沒有顯着的性能下降的情況下支付。請參閱Monitoring Events。
對此的一種替代方案或可能更好的方法可能是使用Microsoft網絡監視器,在SQL Server端口上進行篩選。
如何捕獲網絡流量使用網絡監視器
http://support.microsoft.com/kb/148942
上的用戶名的任何想法? nt_username似乎只與使用Windows身份驗證的會話有關。 net_address返回似乎可能適用於我的mac地址。 – tbone 2010-12-16 12:48:29