--SQLSERVER tempdb 数据库异常增大,导致服务器卡顿。

use tempdb
go

DBCC SQLPERF(LOGSPACE)

--1.查看数据库文件使用情况
select db_name() as dbname,
name as filename,
size/128.0 as CurrentSizeMB,
size/128.0 - cast(fileproperty(name,'spaceUsed') as int)/128.0 as FreeSpaceMB
from sys.database_files;

--2.查看数据库中有无长时间运行的事务
dbcc opentran(tempdb);

--3.由于数据库开启了快照,可通过快照信息查找耗时的查询:
SELECT * FROM sys.dm_tran_active_snapshot_database_transactions order by elapsed_time_seconds desc

--4.获取该session_id对应的查询语句
dbcc inputbuffer(133);
dbcc inputbuffer(58);
--具体执行的语句 execute pr_balance_transfer @p_mode = 'C1',@branch_no = '000',@p_value = '',@p_outpara ='' 

--5.删掉进程
kill 133

原因:存储过程使用大量临时表,查询完后没有提交数据引起的。
解决办法:设置sqlca.commit = true 或者检索完数据后commit;
 

参考:SQL Server 查看正在运行的事务信息的 2 种方法。_cxu123321的博客-CSDN博客_sqlserver查看当前事务

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐