SqlServer Bug:扩展存储过程一直运行出现等待类型PREEMPTIVE_OS
今天使用xp_readerrorlog第一次在新服务器查询一个死锁信息,结果一直在运行,即使kill了也一直在运行: (分别在2个服务器实例中运行,其中一个已经kill) exec xp_readerrorlog 0,1,NULL,'2015-01-07 22:13:10','2015-01-07 22:13:11','ASC' 而下面这个执行是正常的,结果很快出来: exec xp_readerrorlog 0,'deadlock victim','2015-04-01','2015-04-10','desc' 操作系统: ?Microsoft Windows Server 2008 R2 Enterprise ? (64)? Service Pack 1 SqlServer:Microsoft SQL Server 2008 (RTM) Microsoft Corporation ?Enterprise Edition (64-bit) (Build 7601: Service Pack 1)?
select p.spid,p.waittime,p.lastwaittype,p.cpu,p.open_tran,p.status,p.cmd,s.text from master.dbo.sysprocesses p cross apply sys.dm_exec_sql_text(p.sql_handle) s where spid=55 --where spid=374 --haved killed 发现该session的执行时间,CPU一直累增,而且一直在运行。 监视器查看,CPU都增加了20%~30%!!!批处理也多了100以上!~ 服务器64G内存限制SQLserver为55G,其他服务器最少都剩余6~7G,但是这两台执行的可用内存只有不到2G!~ 找到一篇文章:Why does PREEMPTIVE_OS_GETPROCADDRESS Show a Large Accumulation? 说是SqlServer 2008 的一个bug,是执行扩展存储过程导致类型PREEMPTIVE_OS_GETPROCADDRESS不断地累计时间。 按上面所说的,计算扩展存储过程执行的大致时间: declare @WaitTime bigint select @WaitTime = wait_time_ms from sys.dm_os_wait_stats where wait_type = 'MSQL_XP' select @WaitTime - wait_time_ms from sys.dm_os_wait_stats where wait_type = 'PREEMPTIVE_OS_GETPROCADDRESS' 2个实例的结果也只有不到300毫秒。而且,等待类型PREEMPTIVE_OS_GETPROCADDRESS当前并没有增加。 select * from sys.dm_os_wait_stats where wait_type='PREEMPTIVE_OS_GETPROCADDRESS' 没有增加,两种可能的结果: 1. 扩展存储过程执行完了; 2. 扩展存储过程仍然在执行(因为正在执行时,数据是没有计算到DMV中的) 下面执行了一批的查询,发现该session都是正在运行中的,task、thread、work都是在运行同一个对象。 select * from sys.dm_exec_sessions where session_id=55 select * from sys.dm_exec_connections where session_id=55 select * from sys.dm_exec_requests where session_id=55 select * from sys.dm_os_tasks where task_address=0x00000000005DD948 and session_id=55 select * from sys.dm_os_workers where worker_address=0x00000008B58FC1A0 select * from sys.dm_os_threads where thread_address=0x000007FFFFF594A8 到底是不是bug?是不是还在运行?怎么撤销?难道要重启SqlServer服务才能解决? (当前状态仍是上面的图一样,只是时间、CPU在不断增加。仍在寻找答案!~) 最后的解决办法,重启了服务!~CPU和批处理一下就将下来了!(内存等平稳了再确定)~后台会话也不在了!~ 为了验证,再执行一次扩展存储过程!~结果又上来了!~ exec xp_readerrorlog 0,'ASC' 果然还是无法解决啊,之得重启服务,到时测试看看再打补丁吧!~ 第三方的扩展存储过程在数据库中还真是难管理!~ 终极解决: 2015-04-21 升级到sp4,解决了!!~ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- sqlserver2000查询分析器中查询表结构的命令是什么
- SQL Server server .ldf和.mdf的文件附加数据库的sql语句
- sql-server – sql登录失败的用户X … Windows身份验证
- sqlserver主机名变更后的错误与处理办法
- 探究MySQL中索引和提交频率对InnoDB表写入速度的影响
- MySQL数据库备份和还原的常用命令小结
- 了解业务当前是否在T-SQL中打开
- 使用YYYY-MM-DD格式更新mssqlserver中的sql date字段
- 如何将sqlserver表中的数据导出sql语句或生成insert into语
- Sqlserver中 登录用户只能看到自己拥有权限的库