sqlserver 2008 tempdb 数据库数据和日志文件过大怎么解决?
程序员文章站
2022-11-01 08:01:44
今天早上服务器预警,显示空间不足。检查服务器发现tempdb系统数据库占用了大量的控件,日志文件就占用了50G。
1、首先通过系统自带的收缩工具收缩数据库,不起作用。(数据库&m...
今天早上服务器预警,显示空间不足。检查服务器发现tempdb系统数据库占用了大量的控件,日志文件就占用了50G。
1、首先通过系统自带的收缩工具收缩数据库,不起作用。(数据库—右键—任务—收缩—文件)
2、查询数据库当前的活动状态
USE [master] SELECT [name] ,[database_id] ,[log_reuse_wait] ,[log_reuse_wait_desc] FROM [sys].[databases] WHERE name ='tempdb'
结果如下:
结论:事务处于活动状态
3、查询虚拟文件信息
USE tempdb DBCC LOGINFO('tempdb')
结果如下:
结论:存在大量使用中的虚拟文件(status :2)
4、查询并杀掉正在运行的事务
USE master SELECT '正在运行事务的会话的ID' = session_id , '事务的 ID' = transaction_id FROM sys.dm_tran_session_transactions --会话中的事务,识别所有打开的事务 WHERE is_user_transaction = 1 KILL 正在运行事务的会话的ID
5、现在就可以正常收缩数据库及日志文件
小结:造成数据库不能收缩的原因很多,这只是其中的一个原因。查询数据库状态找到病症,才能对症下药。
上一篇: Oracle EBS程序重置密码教程