针对SQL Server的SQL查询的执行日期时间

6kkfgxo0  于 2023-02-11  发布在  SQL Server
关注(0)|答案(2)|浏览(215)

我有一个很好的查询,我曾经找到here
我想在下面的查询中添加查询的执行时间:

USE master
go

SELECT 
    sdest.DatabaseName, sdes.session_id,
    sdes.[host_name], sdes.[program_name],
    sdes.client_interface_name, 
    sdes.login_name, sdes.login_time,
    sdes.nt_domain, sdes.nt_user_name,
    sdec.client_net_address, sdec.local_net_address,
    sdest.ObjName, sdest.Query
FROM 
    sys.dm_exec_sessions AS sdes
INNER JOIN 
    sys.dm_exec_connections AS sdec ON sdec.session_id = sdes.session_id
CROSS APPLY 
    (SELECT 
         db_name(dbid) AS DatabaseName,
         object_id(objectid) AS ObjName,
         ISNULL((SELECT TEXT AS [processing-instruction(definition)]
                 FROM sys.dm_exec_sql_text(sdec.most_recent_sql_handle)
                 FOR XML PATH(''), TYPE), '') AS Query
     FROM 
         sys.dm_exec_sql_text(sdec.most_recent_sql_handle)
    ) sdest
WHERE
    sdes.session_id <> @@SPID 
    -- AND sdes.nt_user_name = '' -- Put the username here !
ORDER BY 
    sdec.session_id

是否有我不知道的列需要包含进来才能得到这个结果?或者我还需要加入另一个表?

g2ieeal7

g2ieeal71#

您可以在sys.dm_exec_query_stats中找到很多关于基于sql_handle的查询执行的信息,包括:last_elapsed_time, max_elapsed_time, total_elapsed_time
我向www.example.com_exec_query_stats添加了一个左连接sys.dm,并从中选择了所有字段。

USE master
go
SELECT sdest.DatabaseName 
    ,sdes.session_id
    ,sdes.[host_name]
    ,sdes.[program_name]
    ,sdes.client_interface_name
    ,sdes.login_name
    ,sdes.login_time
    ,sdes.nt_domain
    ,sdes.nt_user_name
    ,sdec.client_net_address
    ,sdec.local_net_address
    ,sdest.ObjName
    ,sdest.Query
    ,qst.*
FROM sys.dm_exec_sessions AS sdes
INNER JOIN sys.dm_exec_connections AS sdec ON sdec.session_id = sdes.session_id
CROSS APPLY (
    SELECT db_name(dbid) AS DatabaseName
        ,object_id(objectid) AS ObjName
        ,ISNULL((
                SELECT TEXT AS [processing-instruction(definition)]
                FROM sys.dm_exec_sql_text(sdec.most_recent_sql_handle)
                FOR XML PATH('')
                    ,TYPE
                ), '') AS Query

    FROM sys.dm_exec_sql_text(sdec.most_recent_sql_handle)
    ) sdest

LEFT OUTER JOIN sys.dm_exec_query_stats qst ON qst.sql_handle = sdec.most_recent_sql_handle
WHERE sdes.session_id <> @@SPID 
--and sdes.nt_user_name = '' -- Put the username here !
ORDER BY sdec.session_id
8mmmxcuj

8mmmxcuj2#

FOR XML无法序列化节点“processing-instruction(definition)”的数据,因为它包含XML中不允许的字符(0x 0000)。若要使用FOR XML检索此数据,请将其转换为binary、varbinary或image数据类型,然后使用BINARY BASE64指令。

相关问题