读《SQL Server 2005高级管理》的一些摘要... 连载5

T-SQL中监视进程

DBA更愿意使用T-SQL的原因是可以比“活动监视器”更加灵活地获得信息。

1.       sp_whosp_who2

存储过程sp_who也返回当前连接数据库实例,与“活动监视器”非常类似。然而,用户可能发现自己更愿意使用未公开说明的sp_who2存储过程,因为它提供了有关每个进程的更详细信息。不管使用哪个存储过程,它们都将接受相同输入参数。

要查看当前连接服务器的所有连接,可不带任何参数运行sp_who2。这将与“活动监视器”显示相同类型信息。还可以给它传递参数active,从而只查看服务器上的活动链接。

sp_who2 active

最后,可按如下所示传递进程ID作为参数,以查看有关特定进程的详细信息,

  sp_who2  55

2.       sys.dm_exec_connections

动态管理视图sys.dm_exec_connections提供了更多信息,帮助排除SQL Server数据库引擎故障。这个DMVSQL Server中的每个会话返回一行。因为它是DMV,所以它以表格形式显示,并让用户能够对该视图编写复杂的查询,以筛选掉不关心的内容,如下面的询查所示,它只显示执行写入操作的用户连接。

Select* FROM

Sys.dm_exec_sessions WHWRE is_user_process = 1

AND writes >0

除前面介绍的查看进程方法显示的信息外,在这个DMV中还可以看到用户在打开连接后检索的行数以及读取,写入和逻辑读取的次数等。在这个视图中还可以看到每个连接的设置以及最近一次发生的错误(如果存在的话)。

3.       DBCC INPUTBUFFER

   DBCC INPUTBUFFER是一个很有用的DBCC命令,让用户能够查看各个进程ID在运行哪些SQL命令。该命令只接受一个输入参数,即要对其进行诊断的连接的进程ID,如下面的查询所示。

  DBCC INPUTBUFFER53

  该命令返回的重要的一列是在EventInfo列中运行的事件SQL命令。如果运行一个非常大的批处理,则在查询窗口中默认只能看到前256个字符。

4.       Sys.dm_exec_sql_text

5.       有些时候可能需要表格格式的DBCC INPUTBUFFER结果。可使用动态管理函数Sys.dm_exec_sql_text来获得特定查询的文本。它可以与Sys.dm_exec_query_stats动态管理视图结合使用,已获得所有数据库中性能最差的查询。

   Sys.dm_exec_query_stats DMV还显示其他可用的信息负载,它运行的每个查询计划显示一行。可从这个DMV中取得sql_handle列,并将它用于Sys.dm_exec_sql_text函数。因为这个视图位于查询计划级,所以当有人修改查询文本时,它将新查询显示为新的一行。

你可能感兴趣的:(读《SQL Server 2005高级管理》的一些摘要... 连载5)