Sql server 使用具有“应用程序名称”列的探查器跟踪查找哪些应用程序访问我的服务器

Sql server 使用具有“应用程序名称”列的探查器跟踪查找哪些应用程序访问我的服务器,sql-server,profiler,Sql Server,Profiler,我需要找出使用我的sql server的所有应用程序 我正在使用探查器跟踪来实现这一点(如果有其他方法,我将不胜感激) 在Profiler上,我使用了一个重播模板,在查看跟踪结果后,我看到有一列名为Application Name,我想知道是否有办法获得不同的模板(跟踪位于.trc文件中) (顺便问一下,这应该发布在stackoverflow还是serverfault上?) 谢谢, 加布里埃尔试试这个: SELECT DISTINCT ApplicationName FROM ::fn_trac

我需要找出使用我的sql server的所有应用程序

我正在使用探查器跟踪来实现这一点(如果有其他方法,我将不胜感激)

在Profiler上,我使用了一个重播模板,在查看跟踪结果后,我看到有一列名为Application Name,我想知道是否有办法获得不同的模板(跟踪位于.trc文件中)

(顺便问一下,这应该发布在stackoverflow还是serverfault上?)

谢谢, 加布里埃尔试试这个:

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

实际上,您可以在SQLServer2008的探查器中正确地执行此操作

使用以下两个事件创建跟踪:

  • 安全审核:审核登录
  • 安全审计:现有连接
对于这两个事件,捕获以下列:

  • 事件类
  • 应用程序名称
  • SPID(必需)
  • 事件子类
将筛选器添加到事件子类以将其限制为值1。此筛选器将仅捕获非池登录。这将为您提供所有现有连接以及运行跟踪期间发生的任何新登录

接下来,在“组织”列中,将应用程序名称上移到“组”部分。现在将按应用程序名称对所有结果进行分组

这是一个非常轻量级的跟踪,如果您仅将其限制为这些事件并应用过滤器,则不应在服务器上增加太多(如果有)负载


(我很确定以前的版本也是这样。我只是没有一个可以测试。)

谢谢@8kb,真的很有效。有没有办法只隔离非sql应用程序(如作业、代理等)?@Gabriel-如果您知道希望在结果中看到(或看不到)的名称,可以在语句中添加WHERE子句(即WHERE ApplicationName,如“%YourApp%”),我实际上想排除sql 2000应用程序,如sqloem(enterprise manager)但问题是我不知道sql应用程序是什么。谢谢@8kb