2010-09-01 77 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.此过滤器将只捕获非集中登录。这应该会为您提供所有现有连接以及在运行跟踪期间发生的任何新登录。

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

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

(我敢肯定,以前的版本相同的方式工作。我只是没有一个在我面前来测试。)

相关问题