Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.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_Sql Server_Sql Server 2008 - Fatal编程技术网

当前正在SQL Server中运行查询

当前正在SQL Server中运行查询,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,是否有一个程序或sql查询,我可以找到正在sql Server 2012上运行的sql查询?我认为在早期版本的SQL Server中有一个工具可以显示实际的查询内容或存储过程名称?该工具称为SQL Server Profiler,它仍然是标准工具集的一部分。您正在谈论的。根据您的权限,此查询可能会工作: SELECT sqltext.TEXT, req.session_id, req.status, req.command, req.cpu_time, req.total_elapsed_tim

是否有一个程序或sql查询,我可以找到正在sql Server 2012上运行的sql查询?我认为在早期版本的SQL Server中有一个工具可以显示实际的查询内容或存储过程名称?

该工具称为SQL Server Profiler,它仍然是标准工具集的一部分。

您正在谈论的。

根据您的权限,此查询可能会工作:

SELECT sqltext.TEXT,
req.session_id,
req.status,
req.command,
req.cpu_time,
req.total_elapsed_time
FROM sys.dm_exec_requests req
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS sqltext

Ref:

以下是安装SQL探查器所需的内容。但是,如果您希望在生产环境中执行此操作,我建议您通读这篇文章。 还有另一种更好的方法来查看查询,看看这个方法是否有用

这是SQL Server DMV的《行动手册》中的内容:

输出显示spid(进程标识符)、ecid(类似于同一spid中的线程,可用于识别并行运行的查询)、运行SQL的用户、状态(SQL是否正在运行或正在等待)、等待状态(等待原因)、主机名、域名和启动时间(用于确定批次已运行的时间)

好的部分是查询和父查询。例如,它显示了一个存储过程作为父级,以及存储过程中正在运行的查询。这对我来说非常方便。我希望这对其他人有所帮助

USE master
GO
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SELECT
er.session_Id AS [Spid]
, sp.ecid
, er.start_time
, DATEDIFF(SS,er.start_time,GETDATE()) as [Age Seconds]
, sp.nt_username
, er.status
, er.wait_type
, SUBSTRING (qt.text, (er.statement_start_offset/2) + 1,
((CASE WHEN er.statement_end_offset = -1
THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2
ELSE er.statement_end_offset
END - er.statement_start_offset)/2) + 1) AS [Individual Query]
, qt.text AS [Parent Query]
, sp.program_name
, sp.Hostname
, sp.nt_domain


FROM sys.dm_exec_requests er
INNER JOIN sys.sysprocesses sp ON er.session_id = sp.spid
CROSS APPLY sys.dm_exec_sql_text(er.sql_handle)as qt
WHERE session_Id > 50
AND session_Id NOT IN (@@SPID)
ORDER BY session_Id, ecid
我使用下面的查询

SELECT   SPID       = er.session_id
    ,STATUS         = ses.STATUS
    ,[Login]        = ses.login_name
    ,Host           = ses.host_name
    ,BlkBy          = er.blocking_session_id
    ,DBName         = DB_Name(er.database_id)
    ,CommandType    = er.command
    ,ObjectName     = OBJECT_NAME(st.objectid)
    ,CPUTime        = er.cpu_time
    ,StartTime      = er.start_time
    ,TimeElapsed    = CAST(GETDATE() - er.start_time AS TIME)
    ,SQLStatement   = st.text
FROM    sys.dm_exec_requests er
    OUTER APPLY sys.dm_exec_sql_text(er.sql_handle) st
    LEFT JOIN sys.dm_exec_sessions ses
    ON ses.session_id = er.session_id
LEFT JOIN sys.dm_exec_connections con
    ON con.session_id = ses.session_id
WHERE   st.text IS NOT NULL

SQL探查器也就是说,不是吗?:)SQL Server探查器在哪里?在my MS SQL Server 2012中,没有
性能工具
文件夹。我没有看到任何其他工具。如何安装这些工具。我以为一切都安装好了。探查器是否仍在SQL Server 2012中?这些工具安装在哪里?对于非express版本,它附带管理工具选项;express版本不包含profiler这确实有效,但有没有办法找到参数值?我发现这比其他搜索显示正在运行的作业的查询更有用。这一个显示主机和登录,这是伟大的,谢谢!