如何在SQL Server Management Studio中查看执行的查询?
我是SQL Server Management Studio新手,想知道:是否有办法查看哪些查询已针对数据库运行?如何在SQL Server Management Studio中查看执行的查询?
在活动监视器中,有一个“最近昂贵的查询”报告,但我猜这不是所有的查询,因为我没有看到我已经运行的查询。
我正在运行SQL Server Express 2008 v 10.0.1600.22。
使用SQL Profiler并使用过滤器来获取最昂贵的查询。
我忘了提及这是SQL Server Express。从阅读其他文章看来,Profiler并不包含在Express中。这仍然是正确的吗? – bsh152s 2010-03-15 19:06:42
是的,它只包含在Enterprise,Standard和Workgroup版本中。您可以在此比较此功能和其他功能:http://www.microsoft.com/sqlserver/2008/en/us/editions-compare.aspx – 2010-03-15 19:28:48
您需要一个SQL事件探查器,它实际上在SQL Management Studio之外运行。如果您有SQL Server的付费版本(如开发人员版),则应将其作为另一个实用程序包含在其中。
如果您使用的是免费版(SQL Express),则它们具有可供下载的免费软件配置文件。我使用了AnjLab的分析器(可在http://sites.google.com/site/sqlprofiler处获得),它似乎运作良好。
使用活动监视器。这是顶部栏中的最后一个工具栏。它会显示“最近昂贵的查询”列表。您可以双击它们查看执行计划等。
+1用于告诉我们隐藏的功能在哪里以及如何使用它。 – cjbarth 2013-08-16 22:52:18
如果您希望SSMS维护查询历史记录,请使用SSMS Tool Pack add on。
如果您想要监视SQL Server当前正在运行的查询,请使用SQL PRofiler,正如其他人已经提示的那样。
从运行管理套件上运行的进程以下查询:
DBCC inputbuffer(spid#)
这将返回SQL目前正在对数据库运行的SPID提供。请注意,您需要适当的权限才能运行此命令。
这比运行跟踪更好,因为它定位到特定的SPID。您可以根据其CPUTime和DiskIO查看是否长时间运行。
例获得SPID 64的细节:
DBCC inputbuffer(64)
SELECT * FROM sys.dm_exec_sessions es
INNER JOIN sys.dm_exec_connections ec
ON es.session_id = ec.session_id
CROSS APPLY sys.dm_exec_sql_text(ec.most_recent_sql_handle) where es.session_id=65 under see text contain...
你只能得到在ssms(sql管理工作室)中运行的sql,但不能捕获在任何dotnet应用程序目标ado.net中运行的sql。只有sql profiler可以做。 – 2016-07-20 20:05:33
如果你想看到的是已经执行的查询有没有支持默认的方式做到这一点。有一些解决方法可以尝试,但不期望找到全部。
您将无法确定地看到SELECT语句,但可以通过读取事务日志(假设数据库处于完全恢复模式)来查看其他DML和DDL命令。
可以使用DBCC LOG或fn_dblog命令或类似ApexSQL Log第三方日志读取器(注意,工具是有代价的)
现在,如果你打算在那些即将在被执行审计报表做到这一点未来,那么你可以使用SQL事件探查器来捕捉一切。
更清晰的查询,使用工作室SQL查询是:下面分[此博客条目(
SELECT text FROM sys.dm_exec_sessions es
INNER JOIN sys.dm_exec_connections ec
ON es.session_id = ec.session_id
CROSS APPLY sys.dm_exec_sql_text(ec.most_recent_sql_handle)
where program_name like '%Query'
你只能得到在ssms(sql管理工作室)中运行的sql,但是如果你改变了program_name,不能捕获在任何dotnet应用程序目标ado.net中运行的sql。只有sql profiler可以做。 – 2016-07-20 20:07:38
A现在删除回答http://blog.sqlauthority.com/2008/01/03/sql -server-2005-last-ran-query-recently-ran-query /),它显示一个SQL查询以显示最近的SQL查询。 – 2016-01-26 17:44:25