Sql server 将SQL统计信息时间和IO捕获到表中
是否有方法在T-SQL中捕获Sql server 将SQL统计信息时间和IO捕获到表中,sql-server,tsql,Sql Server,Tsql,是否有方法在T-SQL中捕获统计IO和时间,以便登录到表中?否,不使用设置统计IO 但是你不需要这样做;运行SQL Profiler并启动跟踪以输出到文件。包括读取和持续时间。排序 查询统计数据DMV:将捕获与设置统计数据时间所给出的统计数据相同的统计数据 可以从T-SQL查询DMV,就像普通视图一样 但是,SET STATISTICS IO仅被捕获为每次执行的聚合值(最后一次逻辑读取、最后一次物理读取),而没有SET STATISTICS IO给出的每行集差异 总的来说,DMV的作用与@Rem
统计IO
和时间
,以便登录到表中?否,不使用设置统计IO
但是你不需要这样做;运行SQL Profiler并启动跟踪以输出到文件。包括读取和持续时间。排序
查询统计数据DMV:将捕获与设置统计数据时间所给出的统计数据相同的统计数据
可以从T-SQL查询DMV,就像普通视图一样
但是,SET STATISTICS IO
仅被捕获为每次执行的聚合值(最后一次逻辑读取、最后一次物理读取),而没有SET STATISTICS IO
给出的每行集差异
总的来说,DMV的作用与@Remus Rusanu所说的相同,只要知道查询句柄,就可以很容易地将经过的时间捕获到一个表中
例如:
CREATE TABLE #times (
MS BIGINT
);
INSERT INTO #times
SELECT total_elapsed_time
FROM sys.dm_exec_query_stats
WHERE sql_handle = 0x02000000DEE9FC09E552D1E33008EED4E8732B21E171EC160000000000000000000000000000000000000000;
如果total_exposed_time
只返回了几行(因此只有几行缓存查询),您可以查看total_rows
列,找到包含要计时的查询返回的行数的句柄。然后将句柄传递给此DMO以查看查询的文本,以及它是否与要计时的查询匹配:
SELECT *
FROM sys.dm_exec_sql_text (0x02000000DEE9FC09E552D1E33008EED4E8732B21E171EC160000000000000000000000000000000000000000) ;
(希望其他人会对此进行补充,并告诉我们一种更可靠的方法来获取特定查询的query\u句柄
。我现在无法对其进行研究。)