在数据仓库维护过程中,经常会出现定时更新程序和查询SQL发生冲突而引起阻塞的情况,需要进行SQL Server诊断。
SQL Server诊断一般会用到2个视图:sys.sysprocesses(系统进程表) 和sys.dm_exec_sql_text(系统执行内容表) 。
通过查看当前运行的进程信息可以查看阻塞的情况:
SELECT spid,blocked,DB_NAME(sp.dbid) AS DBName,program_name,waitresource,lastwaittype,sp.loginame,sp.hostname,a.[Text] AS [TextData]
FROM sys.sysprocesses AS sp OUTER APPLY sys.dm_exec_sql_text (sp.sql_handle) AS A
WHERE spid > 50
ORDER BY blocked DESC, DB_NAME(sp.dbid) ASC, a.[text];
其中
spid:SQL Server的会话ID&#xff0c;因spid<&#61;50的为SQL Server本身的系统进程&#xff0c;所以这里取spid>50;
blocked&#xff1a;正在阻塞求情的会话 ID,如果此列为0&#xff0c;则标识请求未被阻塞&#xff1b;
DB_NAME(sp.dbid)&#xff1a;当前正由进程使用的数据库名称;
Program_name&#xff1a;应用程序的名称&#xff0c;连接字符串中配的Application Name&#xff1b;
Loginame&#xff1a;登录名&#xff1b;
Hostname&#xff1a;建立链接的客户端工作站的名称&#xff1b;
Text&#xff1a;当前运行的SQL语句。
当找到阻塞进程后&#xff0c;可以使用如下命令结束该进程&#xff1a;
kill spid
铸剑团队签名&#xff1a;
【总监】十二春秋之&#xff0c;3483099&#64;qq.com&#xff1b;
【Master】戈稻不苍&#xff0c;han169&#64;126.com&#xff1b;
【Java开发】雨鸶&#xff0c;343691194&#64;qq.com&#xff1b;思齐骏惠&#xff0c;qiangzhang1227&#64;163.com&#xff1b;小王子&#xff0c;545106057&#64;qq.com&#xff1b;巡山小钻风&#xff0c;840260821&#64;qq.com&#xff1b;
【VS开发】豆点&#xff0c;2268800211&#64;qq.com&#xff1b;
【系统测试】土镜问道&#xff0c;847071279&#64;qq.com&#xff1b;尘子与自由&#xff0c;695187655&#64;qq.com&#xff1b;
【大数据】沙漠绿洲&#xff0c;caozhipan&#64;126.com&#xff1b;张三省&#xff0c;570417591&#64;qq.com&#xff1b;
【网络】夜孤星&#xff0c;11297761&#64;qq.com&#xff1b;
【系统运营】三石头&#xff0c;261453882&#64;qq.com&#xff1b;平凡怪咖&#xff0c;591169003&#64;qq.com&#xff1b;
【容灾备份】秋天的雨&#xff0c;18568921&#64;qq.com&#xff1b;
【安全】保密&#xff0c;你懂的。
原创作者&#xff1a;张三省
著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。