Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 将SQL统计信息时间和IO捕获到表中_Sql Server_Tsql - Fatal编程技术网

Sql server 将SQL统计信息时间和IO捕获到表中

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

是否有方法在T-SQL中捕获
统计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句柄
。我现在无法对其进行研究。)