检查谁使用SQL Server 2000 trc文件登录

时间:2012-04-18 16:55:44

标签: sql-server-2000

我正在尝试浏览多个.trc文件,以了解过去几个月中谁登录过SQL Server。我没有设置跟踪,但我得到的是一堆.trc文件,

例如:

  • C:\SQLAuditFile2012322132923.trc
  • C:\SQLAuditFile201232131931.trc

我可以将这些文件加载​​到SQL事件探查器中并单独查看它们,但我希望能够将它们全部加载,以便我可以快速扫描它们以进行登录。使用过滤器,或者更好的是,将它们加载到SQL Server表中并查询它们。

我尝试使用以下方法将文件加载到表中:

 use <databasename>
 GO
 SELECT * INTO trc_table
 FROM ::fn_trace_gettable('C:\SQLAuditFile2012322132923.trc', 10);
 GO

但是当我这样做时,我收到错误消息:

  

文件'C:\ SQLAuditFile2012322132923.trc'要么不存在,要么不是可识别的跟踪文件。或者打开文件时出错。

但是,我知道文件存在,而且我的名字正确。它们似乎也是可识别的,因为我可以将它们加载到SQL事件探查器中并查看它们。

任何人都知道我为什么会收到此错误消息,如果这不起作用,或许可以更轻松地分析这些多个.trc文件的另一种方式?

谢谢!

2 个答案:

答案 0 :(得分:1)

您可能在C:的根目录上遇到权限问题。尝试将文件放入子文件夹,例如c:\ tracefiles \,并确保SQL Server帐户至少具有该文件夹的显式读取权限。

也可以尝试更简单,例如

SELECT * FROM ::fn_trace_gettable('C:\SQLAuditFile2012322132923.trc', default);

无论如何,除非您明确捕获成功的登录事件,否则我不知道这些跟踪文件将包含您正在寻找的信息......这不是SQL Server默认跟踪的内容。

答案 1 :(得分:0)

我有同样的问题,并且认为我要复制my solution from Database Administrators

我在远程服务器上运行了一条SQL跟踪,并将跟踪文件传输到了 我的工作站上的本地目录,以便我将数据加载到我的表上 用于运行查询的本地SQL Server实例。

起初我认为错误可能是相关许可,但我裁定了这一点 因为我将.trc文件直接加载到SQL事件探查器中没有问题 或作为SSMS的文件。

在尝试了一些其他想法之后,我想到了更多并且意识到了 它毕竟是由于权限:SQL正在运行查询 服务器进程(sqlsrvr.exe)作为用户NT AUTHORITY\NETWORK SERVICE - 不是我自己的Windows帐户。

解决方案是在存储跟踪文件的目录和跟踪中向NETWORK SERVICE授予读取执行权限 文件本身。

您可以通过右键单击目录来执行此操作,转到安全性 选项卡,以用户身份添加NETWORK SERVICE,然后选择Read & Execute 它的权限(这应该自动选择ReadList folder contents)。这些文件权限(ACL)应该自动进行 传播到目录内容。

如果您更喜欢使用命令行,则可以授予必要的权限 目录 - 及其内容 - 运行以下命令:

icacls C:\Users\anthony\Documents\SQL_traces /t /grant "Network Service:(RX)"