先查长事务:
SELECT transaction_id,session_id
FROM sys.dm_tran_active_snapshot_database_transactions
ORDER BY elapsed_time_seconds DESC;
再看这些会话运行了多久:SELECT
es.session_id,
--database_name ='HKERP',
login_name,
er.status,
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_name,
host_name,
nt_domain,
start_timeFROM
sys.dm_exec_requests er INNER JOIN sys.dm_exec_sessions es ON er.session_id = es.session_id CROSS APPLY sys.dm_exec_sql_text(er.sql_handle)as qtWHERE
es.session_id > 50 AND es.session_Id NOT IN (@@SPID) ORDER BY
1, 2
看看有没阻塞:
SELECT s.loginame
,[Individual Query] = SUBSTRING (qr.text,qs.statement_start_offset/2,
(CASE WHEN qs.statement_end_offset = -1 THEN LEN(CONVERT(NVARCHAR(MAX), qr.text)) * 2
ELSE qs.statement_end_offset
END - qs.statement_start_offset)/2)
,qs.session_id ,s.counts AS [进程个数],qs.status ,qs.blocking_session_id
,qs.wait_type ,qs.wait_time ,qs.wait_resource
,qs.transaction_id
FROM SYS.DM_EXEC_REQUESTS qs (nolock)
LEFT JOIN (
SELECT spid,MAX(loginame)AS loginame,COUNT(0)AS counts FROM SYS.SYSPROCESSES (nolock) GROUP BY spid
) s ON qs.session_id=s.spid
OUTER APPLY SYS.DM_EXEC_SQL_TEXT(qs.sql_handle) AS qr
WHERE qs.status = N'suspended'
--and s.loginame<>''
ORDER BY qs.wait_time DESC
--查找阻塞源头v3.0
SELECT SP.spid
,CASE WHEN ST1.text IS NULL THEN ST2.text
ELSE SUBSTRING (ST1.text,SR.statement_start_offset/2,
(
CASE WHEN SR.statement_end_offset = -1 THEN LEN(CONVERT(NVARCHAR(MAX), ST1.text)) * 2
ELSE SR.statement_end_offset
END - SR.statement_start_offset)/2
)
END AS [T-sql]
,SP.loginame
,DB_NAME(SP.dbid) AS [db_name]
,SP.open_tran,SP.hostname,SP.program_name,SP.waitresource,SP.*
FROM SYS.SYSPROCESSES SP (nolock)
LEFT JOIN SYS.DM_EXEC_REQUESTS SR (nolock) ON SP.spid=SR.session_id
LEFT JOIN SYS.DM_EXEC_CONNECTIONS SC (nolock) ON SP.spid=SC.session_id
OUTER APPLY SYS.DM_EXEC_SQL_TEXT(SC.most_recent_sql_handle) AS ST2
OUTER APPLY SYS.DM_EXEC_SQL_TEXT(SR.sql_handle) AS ST1
WHERE SP.spid IN
(
SELECT BLOCKED FROM SYS.SYSPROCESSES (nolock) WHERE BLOCKED<>0 and lastwaittype<>'MISCELLANEOUS'
)
AND SP.BLOCKED=0
杀了阻塞源,或者是长事务,一般就能解决问题了。
同时对比tempdb前后的使用情况。

SQLServer的tempdb暴增导致磁盘消耗的处理方案
来源:这里教程网
时间:2026-03-02 12:51:39
作者:
编辑推荐:
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- SQLServer的tempdb暴增导致磁盘消耗的处理方案
SQLServer的tempdb暴增导致磁盘消耗的处理方案
26-03-02 - AGV是啥意思(AGV是什么的缩写)
AGV是啥意思(AGV是什么的缩写)
26-03-02 - UWB是什么(UWB是什么的缩写)
UWB是什么(UWB是什么的缩写)
26-03-02 - 计算机服务器中了locked勒索病毒怎么处理,locked勒索病毒解密处理流程
- 强势崛起的拼多多,到了“马放南山”的时刻了?
强势崛起的拼多多,到了“马放南山”的时刻了?
26-03-02 - 企业计算机服务器中了halo勒索病毒怎么解密,勒索病毒解密数据恢复
企业计算机服务器中了halo勒索病毒怎么解密,勒索病毒解密数据恢复
26-03-02 - 人脸识别、指纹识别、联网门禁系统安装及步骤图解教程
人脸识别、指纹识别、联网门禁系统安装及步骤图解教程
26-03-02 - 企业计算机服务器中了halo勒索病毒如何解密,halo勒索病毒恢复流程
企业计算机服务器中了halo勒索病毒如何解密,halo勒索病毒恢复流程
26-03-02 - 电脑多个文档你还在一个一个打开吗?
电脑多个文档你还在一个一个打开吗?
26-03-02 - WMS是什么意思啊(WMS是指什么)
WMS是什么意思啊(WMS是指什么)
26-03-02
