数据库tempdb在运行过程中主要会遇到2种报错:
1.tempdb空间已满
2.tempdb日志已满

正常情况下,tempdb空间及日志使用率会自动收缩,不需要我们定期收缩。但有些时候,效率较差的SQL语句调用较多的临时表运行较长时间,或部分连接占用临时表空间,长期没有释放,导致tempdb一直处于ACTIVE_TRANSACTION状态,tempdb就无法自动收缩。若设置了告警,则会收到tempdb使用率超过阈值的告警信息,此时就需要DBA进行干预。

使用关键词‘tempdb is full’进行搜索,解决方案大致分为3种:
1.shrink tempdb file
2.expand tempdb file
3.restart sqlserver

  1. 收缩文件:
    --查看数据库文件Select NAME,size From sys.database_files WITH(NOLOCK)--收缩指定的数据库文件DBCC SHRINKFILE(N'templog' , 10,TRUNCATEONLY)

数据库在处于活动事务状态时,无法收缩,且在数据库日志已满的情况下,无法进行收缩行为。

  1. 扩大文件
      alter database tempdb modify file(name ='N'templog',size=target_size_in_mb)alter database tempdb modify file(name ='N'templog',MAXSIZE=unlimited)alter database tempdb modify file(name ='N'templog',growth=10%)

在数据库日志已满的情况下,进行基本操作都会报“日志已满”,收缩行为也不例外,此时想进行其他操作缓解数据库情况,可将文件扩大,待tempdb恢复正常后再缩小其大小。

  1. 重启数据库

重启数据库将重建tempdb,因此此方法也可以解决‘tempdb is full’的问题。但是生产服务器重启可能会造成很大的影响,应该谨慎再谨慎,所以此方法应是没有更好的办法的解决之法。

上述三种办法基本属于治标不治本类,因为造成数据库无法自动收缩的原因没有找到,后续仍有可能引发同样的问题。那么接收到tempdb log使用率或空间使用率>90%的告警时,如何找出原因,从而避免使用率上升到100%呢?

1.查看数据库基本情况:

查看数据库log信息:
DBCC SQLPERF(LOGSPACE);

--查看数据库文件使用情况
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


发现top 1 的session_id与dbcc opentran结果吻合

4.获取该session_id对应的查询语句

dbcc inputbuffer(687);


5.kill 查询:

 kill 687;

数据库 unused space开始回升。

数据库问题解决后,将语句发给对应的责任人进行整改,避免后续引发相同问题。

TEMPDB空间已满相关推荐

  1. [转载]虚拟机磁盘空间已满的发现和解决

    原文链接: http://www.storagelab.org.cn/zhangdi/2014/01/10/%e8%99%9a%e6%8b%9f%e6%9c%ba%e7%a3%81%e7%9b%98% ...

  2. iphone相册储存空间已满_iphone可用存储空间已满?教你快速回收存储空间

    iphone存储可用空间已满怎么办 在购买iPhone之前,我们通常没有想到自己会把32G或者64G的存储空间填满,于是会愿意少花一点钱来买一个存储空间相对小一些的iPhone.但是在之后的使用过程中 ...

  3. Word为什么会报告磁盘空间已满

    在WORD编辑文档保存时,提示"磁盘已满或打开文件过多",哪个区都不让保存,新建一个文档,复制过去,也是一样.查看各个磁盘的剩余空间,每个磁盘剩余空间都有很大. 解决: 打开C:\ ...

  4. iphone相册储存空间已满_iPhone老提示储存空间已满的具体处理操作

    大家欧遇到过iPhone老提示储存空间已满的问题吗?今天小编就分享了iPhone老提示储存空间已满的具体处理操作方法,请看文章详细介绍,帮助大家答疑解惑. iPhone老提示储存空间已满的具体处理操作 ...

  5. 小米手机显示服务器已满,小米云空间不足怎么办 小米云服务空间已满官方解决方案...

    小米用户越来越多人喜欢采用小米官方提供的云服务空间,通常都是开启自动同步云服务,你知道小米云服务空间默认大小为10G,一旦云空间容量不足,则将使用户无法同步储存在手机上的各种数据,同时增加了用户个人信 ...

  6. 手机iCloud储存空间已满,怎么解决?

    最近手机总是弹出iCloud储存空间已满,升级的话得花钱,以后再说的话,总感觉有点 不安,担心自己的照片啥的会存不了,所以特意查找了这种方法,如果有出现这种情况的朋友,可以试试. 1. 找出iClou ...

  7. 在我们之间为什么显示服务器已满,icloud储存空间已满怎么解决

    icloud储存空间已满怎么办?icloud储存空间已满怎么解决?当我们的iPhone手机收到icloud储存空间已满的提示时该怎么办呢,怎么解决iPhone手机icloud储存空间已满提示,&quo ...

  8. iphone相册储存空间已满_iPhone手机提示icloud储存空间已满怎么办?icloud储存空间已满怎么解决?...

    icloud储存空间已满怎么办?icloud储存空间已满怎么解决?当我们的iPhone手机收到icloud储存空间已满的提示时该怎么办呢,怎么解决iPhone手机icloud储存空间已满提示,&quo ...

  9. 腾讯出行在微信内测试打车功能;​微软Teams全球宕机数小时后恢复正常;iOS 15.6 修复显示储存空间已满问题|极客头条

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

最新文章

  1. bzoj1927: [Sdoi2010]星际竞速
  2. 道理我都懂,但是神经网络反向传播时的梯度到底怎么求?
  3. ETC带火车牌识别设备 多方企业狭路相逢
  4. Bootstrap系列 -- 26. 下拉菜单标题
  5. 详解JavaScript中void语句的使用
  6. Linux下添加普通帐号
  7. postgresql9.5 run 文件linux安装后配置成开机服务
  8. C语言求一个数组中第k大的数,leetcode | Median of Two Sorted Arrays 寻找2个有序数组中第k大的值...
  9. 横向越权访问java_基于ThinkPhp5开发横向越权逻辑漏洞安全指南
  10. 为什么Java会给system报错_java – 为什么将System.nanoTime()转换为Calendar对象会给我错误的当前日期?...
  11. JS 日期工具类-基于yDate
  12. SQL文件的BOM问题导致的invalid character错误及解决
  13. macbook关闭镜像_如何在关闭时让MacBook保持清醒状态
  14. 核心期刊与统计源期刊
  15. 100道MySQL数据库经典面试题解析(有空必看)
  16. 关系型数据库设计之从E-R图绘制到数据库表设计
  17. Git Clone时报错解决方法
  18. 开源录屏软件Captura安装和使用
  19. ROS2进行人脸识别face_recognition
  20. 无线传感器实验-低功率无线信道建模

热门文章

  1. java写excel_java写excel文件工具
  2. 全球与中国小龙虾市场深度研究分析报告
  3. gnu make 手册 学习笔记 C语言 / C++ 构建工具 part.5 函数 控制语句
  4. USB(六)-HID(报告描述符的结构实现)
  5. 同比、环比、YTD、MTD
  6. 谈谈技术债务的定义,影响以及管理
  7. linux配置yum源
  8. LeetCode刷题分类
  9. 【转】Endnote中英文混排及输出作者全名的解决办法
  10. 记录又一次实战GetShell