【0】问题操作
我做了一个监控,
--监控十分钟内的错误日志信息
监控语句如下:
--监控十分钟内的错误日志信息 declare @start_time datetime,@end_time datetime set @start_time = DATEADD(minute,-10,GETDATE()) set @end_time = GETDATE() if OBJECT_ID('tempdb..#tmp_error_log') is not null drop table #tmp_error_log create table #tmp_error_log ( logdate datetime, processinfo varchar(100), info varchar(8000) ) insert into #tmp_error_log exec dbo.xp_readerrorlog 0,1,NULL,NULL,@start_time,@end_time,N'desc' select COUNT(1) as num, MAX(logdate) as logdate,info from #tmp_error_log where (info like '%ERROR%' or info like '%WARN%' or info like '%FAIL%' or info like '%STOP%') and info not like '%CHECKDB%' and info not like '%Registry startup parameters%' and info not like '%Logging SQL Server messages in file%' and info not like '%previous log for older entries%' group by info
【1】故障信息
我发现,某一个实例上,一直正在运行下面图片的语句;
等待也是等待 MSQL_XP :当某任务正在等待扩展存储过程结束时出现。 SQL Server 使用该等待状态检测潜在的 MARS 应用程序死锁。 该等待将在扩展存储过程调用结束时停止。
dm_exec_requests 查看
错误日志大小查看
好像也没有多大,也就60M左右
exec xp_enumerrorlog
并行度查看
好像也没有什么问题
tempdb查看
如下图:好像也出现一些问题
然后在系统表tempdb.sys.tables里存在,直接select该表名却提示表名不存在(这个应该是正常的,是局部临时表,其他会话无法访问)
用 sysindexes 查看 使用object_name(obj_id),显示null,rows 也显示0
我估计这个有点问题,既然是tempdb的问题,那么重启服务就可以了吧
【3】重启解决
既然推断是tempdb的问题,那么重启服务就可以了吧,重启服务提示重启失败,最终直接重启服务器,解决了。
【总结】
生产环境还是要慎重,不能瞎加东西,尽管已经测过;
我这个在之前的几个主要库测过,效率非常快才敢上,结果还是在这个次重要实例上载了跟头;