Profiler Trace 已被弃用,但您仍然可以使用它。此外,还有几种方法可以查看正在发生的事情:
根据您的 SQL Server 版本,您可以使用system_health
扩展事件会话。
下面是一种system_health
在 SQL Server 2008 中查询的方法:
SELECT
td.r.value('@name','sysname') event_name,
td.r.value('@timestamp','datetime2(7)') event_timestamp,
td.r.value('(data[@name="wait_type"]/text)[1]','sysname') wait_type,
td.r.value('(data[@name="duration"]/value)[1]','bigint') wait_duration,
td.r.value('(action[@name="sql_text"]/value)[1]','nvarchar(max)') sql_text,
td.r.query('.') event_data
into #xe
FROM (
SELECT
CAST(target_data AS XML) target_data
FROM sys.dm_xe_sessions s
JOIN sys.dm_xe_session_targets t
ON s.address = t.event_session_address
WHERE s.name = N'system_health'
and target_name = 'ring_buffer'
) base
CROSS APPLY target_data.nodes('/RingBufferTarget/*') td(r);
GO
select
event_name,
dateadd(HOUR,-5,event_timestamp) event_timestamp,
wait_type,
wait_duration,
sql_text,
event_data
from #xe
order by event_timestamp desc
GO
DROP TABLE #xe;
Run Code Online (Sandbox Code Playgroud)
SQL Server 2012 在其system_health
事件会话中提供了更多信息。我在这里有一组查询将解析大部分组成部分。
但是,根据您要查找的内容,该信息可能不包含在 system_health 中,除非它等待闩锁或其他资源的时间超过 15 秒,等待锁定的时间超过 30 秒,或者它一直在等待某事在 SQL Server API 之外超过 5 秒(抢先等待)。
小智 6
在您的 MS SQL Server Management Studio 中
工具 -> SQL Profiler
有一些关于选择行/命令和列的小细节,但在 MSDN 上快速阅读它,您可以开始查看发送到引擎要执行的内容。
奥布斯:。它会嗅探从该服务器上的任何数据库的任何用户和应用程序发送到引擎的任何命令。
小智 5
SQL Server Profiler显示针对 SQL Server 实例执行的所有查询。查询可以由用户、应用程序、SQL Server 本身等执行。
为了能够查看查询,必须配置并运行 SQL 跟踪: