tempdb过大事故记录-sqlserver

今天收到预警消息,提示磁盘空间已经满了,感觉很奇怪.刚装的新机器怎么可能会磁盘空间不足.登陆看了看

可以看的到tempdb已经65G的了,而且显示是百分百可用.这个就很奇怪了,为什么会出现这种情况呢.考虑到磁盘会爆满,立即重启了sqlserver,修改tempdb的初始值大小为10G,然后回收调可用的空间给OS,看样子是告一段落了.事实上并不是这样,我的tempdb第二天暴增了.这是怎么回事?我这台机器现在跑的程序基本没有,只是作为复制的订阅端.怎么会出现这种情况呢.然后就登陆看了看数据库统计信息:

SELECT top 10 t1.session_id,
t1.internal_objects_alloc_page_count, t1.user_objects_alloc_page_count,
t1.internal_objects_dealloc_page_count , t1.user_objects_dealloc_page_count,
t3.login_name,t3.status,t3.total_elapsed_time
from sys.dm_db_session_space_usage t1
inner join sys.dm_exec_sessions as t3
on t1.session_id = t3.session_id
where (t1.internal_objects_alloc_page_count>0
or t1.user_objects_alloc_page_count >0
or t1.internal_objects_dealloc_page_count>0
or t1.user_objects_dealloc_page_count>0)
order by t1.internal_objects_alloc_page_count desc

查看数据库的会话占用的tempdb的空间大小,然后根据SPID查看详细信息,然后查处会话的具体信息

根据信息我查到有一个会话占用特别多的临时空间,仔细查看了一下会话的详细信息.select 语句如下:

select 1

很奇怪对不对,有两个问题考虑一下:

1:为什么要一直不停执行这个语句

2:这个语句是用来做什么的

根据以上统计信息我们可以查出来登陆名和程序所在的程序名,初步确认了是那个程序造成的,然后根据上面两个疑问去查询

发现有以下代码:

红线内是原来没有的,一个数据库链接链接以后没有释放.所以才会一致链接数据库不释放整个会话和会话资源.然后加上以后重新启动程序.继续监控,发现问题已经解决了.

时间: 2024-08-07 04:56:53

tempdb过大事故记录-sqlserver的相关文章

[小细节,大BUG]记录一些小问题引起的大BUG(长期更新....)

[小细节,大BUG]  1. 在不久前,一个朋友出现了这样一个BUG:当UITableView加载cell的时候,自定义的cell,怎么显示,里面的文字总是显示不完全(注意,文字不长).然后,我帮忙给看了下,甚至把在storyBoard中将cell的相关属性都试了下,虽然可以解决,但是效果不理想.最终经过排查,终于发现问题所在:当自定义cell时,因为需要布局子控件,所以他重写了layoutSubviews方法,然而在此方法中没有调用[super layoutSubviews],所以造成了布局混

郑州铁路局管段发生铁路交通较大事故

12月10日9时42分,郑州局京广线X103次特快货物班列(SS--0045号机车,北京机务段配属并值乘)运行至安阳站客场至运转场下行线K491+200处,撞死6名电务作业人员,2名职工4名民工,根据<铁路交通事故调查处理规则>第十条规定,构成铁路交通较大事故. 据调查,造成这起事故的直接原因是来车预报信息联控不畅,现场安全防护失效所致.一是现场防护员没有尽到防护责任.现场作业期间没有执行3至5分钟主动呼叫制度,也没有认真瞭望,没有发现列车接近并组织人员下道.二是室内外防护员列车预报信息沟通不

查询数据库中第二大的记录的几种方法

在学习过程中,遇到一个问题,查询最大的数据时十分容易,使用MAX函数语句即可,但是如何查询第二大的记录呢, 抱着这个问题我开始查找资料 首先建表语句,我建立了一个employee的表,属性有id,name和age,其中id为int 自增 主键,name为char(5),age为int型,创建及插入数据语句略去 首先我看到了以下方法 方法一: 1 select top 1 height from users where height not in (select MAX(height) from

WHERE条件用不到索引的情况下如何删除大表记录?

如果开发人员在做表设计阶段没有考虑到大表历史数据的维护性,随着数据量越来越大,表就越来越难管理和维护.连创建索引的失败都可能会失败(因为创建索引要利用临时表空间的的排序,当临时表空间不够大创建索引的动作就会报错).如果过滤条件用不到索引,每成功完成一次delete操作就需要全表扫描一次...那么几十GB的大表,情何以堪...? 那么有什么方法可以解决这种问题吗?当然改造生产表是可以的(利用DBMS_REDEFINITION在线重定义的方法可以很好的控制阻塞时间)再者可以利用游标获取结果集每行的R

2015年2月13日服务器无法访问事故记录以及经验总结

 计划2015年每天写一篇文章 提问请移步 http://weibo.com/p/1001603810113986105909 如果您不想看完整过程的话,那么直接看经验总结,转发留存吧! 事故主要问题 手工修改过IP设置,因此使用图形界面修改将导致出错,后果就是路由表错误 机房相关经验 需要关注机房的允许维护的时间,特别是公众假期 需要准备好详尽的交通路线,例如这个机房出租车司机可能更熟悉原来的名称:松下电视机厂 需要关注机房的门禁管理,身份证是一定要带的,之前的机房还有需要提前自制工卡的情

大网站记录

<大型网站技术架构:核心原理与架构分析>阅读心得记录(以下个人理解,如果错误还望指正) 1.机器的演化 初始架构等级1:一个应用服务器中包含应用程序,文件,数据库都包含 等级2:分成三个服务器应用程序服务器,文件服务器,数据库服务器. 等级3:建立缓存,将最常用的数据进行缓存,此处分成2.5和3两个等级,2.5是依靠自己的大内存,3是依靠远程分布式缓存服务器 等级4:应用服务器的集群,增加一台负载均衡的服务器用来进行调度. 等级5:当数据库负载过高时,使用主从分离的技术,建立一个主库,一个从库

记生产服务器频繁死机重大事故

硬件环境:曙光天阔I620Vmware ESXI 6.5虚机机操作系统:centos 6.9raid 5 问题现象:系统陆续出现断续无法访问的现象:nginx虚机.mysql虚机阶段性频繁宕机:无Dump日志,kernel日志无异常, message无错误信息: 问题排查过程最开始我们怀疑是因为软件程序的问题,所以最先查看了linux系统日志,可是日志中并没有留下任何蛛丝马迹. 然后我们又分析了nginx的access日志和error日志同样一无所获,之后根据访问量打印出了top url,收集宕

盘点2018年化工行业大事故!回顾那些令人心痛的瞬间......

作者:流程工业 2018年事故不断发生,损失不可不谓之惨重.从山东枣庄市爆炸事故造成9人死亡到四川宜宾化工厂燃烧造成19人伤亡,这些数字透漏出来严重的安全问题,企业到底该如何搞好化工安全?安全人该如何履行好职责?接下来,跟随流程程一起回顾2018年13起较大化工事故心痛瞬间! 1.新疆吐鲁番恒泽煤化公司"1?24"闪爆 2018年1月24日,新疆吐鲁番市恒泽煤化有限公司在对改质沥青高位槽油气回收管道进行检维修作业时发生闪爆,造成3人死亡.1人重伤,事故教训深刻,影响严重.事故具体起因尚

set QUOTED_IDENTIFIER ON事故记录

作业执行失败: 看了一下执行脚本 delete  top(8000) from "interface"."完成" where  loggid in( select loggid from "interface"."完成20150601" ) 然后再sqlserver query执行一下,发现是可以成功的.然后执行语句 set QUOTED_IDENTIFIER ON 再执行作业还是失败的,然后将脚本改为 set QUOTED_