使用SQL Server Profiler进行日志表访问

Tad*_*mas 5 sql-server profiler

有没有一种方法可以使用Profiler来确定查询是否正在访问表?

我看到了一个名为Object:Opened(指示访问对象的时间,例如SELECT,INSERT或DELETE语句的时间)和的事件Object:Closed,但是它们似乎不起作用。

特别是,我使用Object:Opened和Object:Closed创建了一个简单的跟踪,没有过滤器(标准的“ Application Name not like'SQL Profiler'”过滤器除外)和ran SELECT TOP 1 * FROM TableName,但是未报告任何事件。

因此,有没有一种方法可以使用Profiler来确定是否从中选择了表?

Nic*_*ias 4

它可能有助于调查 SQL 正在获取的锁。Select 语句通常会获取共享锁 (LCKMS),因此您可以对此进行过滤。

在探查器中查找 Locks:Acquired 事件。ObjectID 将解析为您可以轻松查找的表OBJECT_NAME(objectid)。Mode 会告诉您正在获取的锁类型是共享锁 3。有关更多信息,请参见此处