在MS SQL Server中怎么查看正在执行的SQL

2025-03-01 23:24:50
推荐回答(3个)
回答1:

有二种方式来查看正在执行的SQL语句

  1. 使用SQL自带的SQL Server Profiler,以可视化界面的方式来查看。

    从开始=》所有程序=》Microsoft SQL Server 2008=》性能工具打开Profiler工具,也可以打开SQL Server Management Studio=》工具=》SQL Server Profiler。

    然后选择文件=》新建=》跟踪打开一个连接窗口,选择将要跟踪的服务器实例然后连接,并打开“跟踪属性”对话框,点运行即可看到正在执行的SQL语句。

  2. 使用SQL语句来查看正在运行的语句,如下

        SELECT  [Spid] = session_id ,
                ecid ,
                [Database] = DB_NAME(sp.dbid) ,
                [User] = nt_username ,
                [Status] = er.status ,
                [Wait] = wait_type ,
                [Individual Query] = SUBSTRING(qt.text,
                                               er.statement_start_offset / 2,
                                               ( 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) ,
                [Parent Query] = qt.text ,
                Program = program_name ,
                hostname ,
                nt_domain ,
                start_time
        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 -- Ignore system spids.
                AND session_id NOT IN ( @@SPID ) -- Ignore this current statement.
    ORDER BY    1 ,
                2


回答2:

用MSSQL自带的工具 SQL Server Profiler 可以看到。

SQL Profiler是一个图形界面和一组系统存储过程,其作用如下:
图形化监视SQL Server查询;
在后台收集查询信息;
分析性能;
诊断像死锁之类的问题;
调试T-SQL语句;
模拟重放SQL Server活动;

回答3:

首先你参照的软件用到的数据库SQL SERVER环境你有没有,如果有你可以监测SQL执行的情况,那样可以获取SQL执行的语句。不过现在很多程序都对SQL进行了封装,如果存储过程加密了,那还得费一翻功夫。