SqlServer异常处理常用步骤
SQL Server常见的问题主要是SQL问题造成,常见的主要是CPU过高和阻塞。
1、查询系统动态视图查询执行时间长的sql语句500 ) SELECT distinct a.* FROM ( SELECT TEXT,AA.* FROM sys.sysprocesses AA CROSS APPLY sys.dm_exec_sql_text(AA.sql_handle) ) a JOIN ProcessCTE bucte WITH(NOLOCK) ON bucte.blocked=a.spid --where loginame = 'TCScenery' ORDER BY a.CPU
1、查询系统动态视图查询阻塞的sql语句0 union SELECT blocked FROM sys.sysprocesses WHERE blocked>0 ) SELECT distinct a.* FROM ( SELECT TEXT,AA.* FROM sys.sysprocesses AA CROSS APPLY sys.dm_exec_sql_text(AA.sql_handle) ) a JOIN ProcessCTE bucte WITH(NOLOCK) ON bucte.blocked=a.spid ORDER BY a.blocked2、使用系统自带的存储过程Sp_who2和sp_lock以及使用dbcc inputbuffer(spid) 也可以用来分析阻塞 sp_who可以返回如下信息: (可选参数LoginName,或active代表活动会话数) sp_who2除了显示上面sp_who的输出信息外,还显示下面的信息: (可选参数LoginName,或active代表活动会话数)
A.列出全部当前进程以下示例使用没有参数的 sp_who 来报告所有当前用户。 B.列出特定用户的进程以下示例显示如何通过登录名查看有关单个当前用户的信息。 C.显示所有活动进程D.显示会话 ID 标识的特定进程sp_lock用法说明sp_lock [ [ @spid1 = ] 'session ID1' ] [,[@spid2 = ] 'session ID2' ][ ; ] 来自用户想要锁定其信息的 sys.dm_exec_sessions 的数据库引擎会话 ID 号。 session ID1 的数据类型为 int,默认值为 NULL。 执行 sp_who 可获取有关该会话的进程信息。 如果未指定会话 ID1,则显示有关所有锁的信息。 [ @spid2 = ] 'session ID2' 来自 sys.dm_exec_sessions 的另一个数据库引擎会话 ID 号,该会话 ID 号可能与 session ID1 同时具有锁,并且用户也需要其有关信息。 session ID2 的数据类型为 int,默认值为 NULL。 在 sp_lock 结果集中,由 @spid1 和 @spid2 参数指定的会话所持有的每个锁都对应一行。 如果既未指定 @spid1 又未指定 @spid2,则结果集将报告当前在数据库引擎实例中处于活动状态的所有会话的锁。 列名 |
Type列标识的资源类型:
值:
DBCC INPUTBUFFER
显示从客户端发送到 Microsoft® SQL Server™ 的最后一个语句。
语法
DBCC INPUTBUFFER (spid)
参数
spid
是 sp_who 系统存储过程的输出中所显示的用户连接系统进程 ID (SPID)。
结果集
DBCC INPUTBUFFER 返回包含如下列的行集。
例如,当缓冲区中的最后事件是 DBCC INPUTBUFFER(11) 时,DBCC INPUTBUFFER 将返回以下结果集。
EventType Parameters EventInfo
-------------- ---------- ---------------------
Language Event 0 DBCC INPUTBUFFER (11)
(1 row(s) affected)
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!