SqlServer Bug:擴充預存程序一直運行出現等待類型PREEMPTIVE_OS_GETPROCADDRESS,sqlserver

來源:互聯網
上載者:User

SqlServer Bug:擴充預存程序一直運行出現等待類型PREEMPTIVE_OS_GETPROCADDRESS,sqlserver


今天使用xp_readerrorlog第一次在新伺服器查詢一個死結資訊,結果一直在運行,即使kill了也一直在運行:

(分別在2個伺服器執行個體中運行,其中一個已經kill)

exec xp_readerrorlog 0,1,NULL,NULL,'2015-01-07 22:13:10','2015-01-07 22:13:11','ASC'


而下面這個執行是正常的,結果很快出來:

exec xp_readerrorlog 0,1,'deadlock victim',NULL,'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) swhere spid=55--where spid=374 --haved killed



發現該session的執行時間,CPU一直累增,而且一直在運行。



找到一篇文章:Why does PREEMPTIVE_OS_GETPROCADDRESS Show a Large Accumulation?


說是SqlServer 2008 的一個bug,是執行擴充預存程序導致類型PREEMPTIVE_OS_GETPROCADDRESS不斷地累計時間。


按上面所說的,計算擴充預存程序執行的大致時間:

declare @WaitTime bigintselect @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=55select * from sys.dm_exec_connections where session_id=55select * from sys.dm_exec_requests where session_id=55select * from sys.dm_os_tasks where task_address=0x00000000005DD948 and session_id=55select * from sys.dm_os_workers where worker_address=0x00000008B58FC1A0select * from sys.dm_os_threads where thread_address=0x000007FFFFF594A8


到底是不是bug?是不是還在運行?怎麼撤銷?難道要重啟SqlServer服務才能解決?

(目前狀態仍是上面的圖一樣,只是時間、CPU在不斷增加。仍在尋找答案!~)






相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.