今天一個同事說在一個生產庫執行某個存儲過程,遇到了錯誤: Fatal error 605 occurred at jul 29 2014 sql
我試着執行該存儲過程,結果出現下面錯誤,每次執行該存儲過程,獲得的錯誤內容都不同(page變化,還有就是allocation unit)變化 數據庫
消息 605,級別 21,狀態 3,過程 usp_xxxxxxxxx,第 228 行 app
Attempt to fetch logical page (7:121808) in database 2 failed. It belongs to allocation unit 8358680970783621120 not to 5332262008984567808. ide
消息 605,級別 21,狀態 3,過程 usp_xxxxxxxxx,第 228 行 fetch
Attempt to fetch logical page (3:122376) in database 2 failed. It belongs to allocation unit 8574853753020284928 not to 5332262008984567808. ui
消息 605,級別 21,狀態 3,過程 usp_xxxxxxxxx,第 228 行 this
Attempt to fetch logical page (7:394) in database 2 failed. It belongs to allocation unit 7782220197180997632 not to 1297036693380923392. spa
第一次遇到這個問題,首先我想到的是是否數據庫tempdb是否有一致性錯誤問題,由於tempdb的database_id爲2.因而我對tempdb數據庫作了dbcc checkb 完整一致性檢查,結果以下所示,沒有發現任何問題。scala
DBCC CHECKDB('tempdb')
DBCC results for 'tempdb'.
DBCC CHECKDB will not check SQL Server catalog or Service Broker consistency because a database snapshot could not be created or because WITH TABLOCK was specified.
DBCC results for 'sys.sysrscols'.
There are 754 rows in 8 pages for object "sys.sysrscols".
DBCC results for 'sys.sysrowsets'.
There are 107 rows in 1 pages for object "sys.sysrowsets".
DBCC results for 'sys.sysallocunits'.
There are 119 rows in 2 pages for object "sys.sysallocunits".
DBCC results for 'sys.sysfiles1'.
There are 8 rows in 1 pages for object "sys.sysfiles1".
DBCC results for 'sys.syspriorities'.
There are 0 rows in 0 pages for object "sys.syspriorities".
DBCC results for 'sys.sysfgfrag'.
There are 2 rows in 1 pages for object "sys.sysfgfrag".
DBCC results for 'sys.sysphfg'.
There are 1 rows in 1 pages for object "sys.sysphfg".
DBCC results for 'sys.sysprufiles'.
There are 8 rows in 1 pages for object "sys.sysprufiles".
DBCC results for 'sys.sysftinds'.
There are 0 rows in 0 pages for object "sys.sysftinds".
DBCC results for 'sys.sysowners'.
There are 14 rows in 1 pages for object "sys.sysowners".
DBCC results for 'sys.sysprivs'.
There are 131 rows in 1 pages for object "sys.sysprivs".
DBCC results for 'sys.sysschobjs'.
There are 84 rows in 1 pages for object "sys.sysschobjs".
DBCC results for 'sys.syscolpars'.
There are 598 rows in 10 pages for object "sys.syscolpars".
DBCC results for 'sys.sysnsobjs'.
There are 1 rows in 1 pages for object "sys.sysnsobjs".
DBCC results for 'sys.syscerts'.
There are 0 rows in 0 pages for object "sys.syscerts".
DBCC results for 'sys.sysxprops'.
There are 0 rows in 0 pages for object "sys.sysxprops".
DBCC results for 'sys.sysscalartypes'.
There are 34 rows in 1 pages for object "sys.sysscalartypes".
DBCC results for 'sys.systypedsubobjs'.
There are 0 rows in 0 pages for object "sys.systypedsubobjs".
DBCC results for 'sys.sysidxstats'.
There are 170 rows in 2 pages for object "sys.sysidxstats".
DBCC results for 'sys.sysiscols'.
There are 318 rows in 2 pages for object "sys.sysiscols".
DBCC results for 'sys.sysbinobjs'.
There are 23 rows in 1 pages for object "sys.sysbinobjs".
DBCC results for 'sys.sysaudacts'.
There are 0 rows in 0 pages for object "sys.sysaudacts".
DBCC results for 'sys.sysobjvalues'.
There are 179 rows in 26 pages for object "sys.sysobjvalues".
DBCC results for 'sys.sysclsobjs'.
There are 16 rows in 1 pages for object "sys.sysclsobjs".
DBCC results for 'sys.sysrowsetrefs'.
There are 0 rows in 0 pages for object "sys.sysrowsetrefs".
DBCC results for 'sys.sysremsvcbinds'.
There are 0 rows in 0 pages for object "sys.sysremsvcbinds".
DBCC results for 'sys.sysxmitqueue'.
There are 0 rows in 0 pages for object "sys.sysxmitqueue".
DBCC results for 'sys.sysrts'.
There are 1 rows in 1 pages for object "sys.sysrts".
DBCC results for 'sys.sysconvgroup'.
There are 0 rows in 0 pages for object "sys.sysconvgroup".
DBCC results for 'sys.sysdesend'.
There are 0 rows in 0 pages for object "sys.sysdesend".
DBCC results for 'sys.sysdercv'.
There are 0 rows in 0 pages for object "sys.sysdercv".
DBCC results for 'sys.syssingleobjrefs'.
There are 157 rows in 1 pages for object "sys.syssingleobjrefs".
DBCC results for 'sys.sysmultiobjrefs'.
There are 106 rows in 1 pages for object "sys.sysmultiobjrefs".
DBCC results for 'sys.sysguidrefs'.
There are 0 rows in 0 pages for object "sys.sysguidrefs".
DBCC results for 'sys.syscompfragments'.
There are 0 rows in 0 pages for object "sys.syscompfragments".
DBCC results for 'sys.sysftstops'.
There are 0 rows in 0 pages for object "sys.sysftstops".
DBCC results for 'sys.sysqnames'.
There are 97 rows in 1 pages for object "sys.sysqnames".
DBCC results for 'sys.sysxmlcomponent'.
There are 99 rows in 1 pages for object "sys.sysxmlcomponent".
DBCC results for 'sys.sysxmlfacet'.
There are 112 rows in 1 pages for object "sys.sysxmlfacet".
DBCC results for 'sys.sysxmlplacement'.
There are 18 rows in 1 pages for object "sys.sysxmlplacement".
DBCC results for 'sys.sysobjkeycrypts'.
There are 0 rows in 0 pages for object "sys.sysobjkeycrypts".
DBCC results for 'sys.sysasymkeys'.
There are 0 rows in 0 pages for object "sys.sysasymkeys".
DBCC results for 'sys.syssqlguides'.
There are 0 rows in 0 pages for object "sys.syssqlguides".
DBCC results for 'sys.sysbinsubobjs'.
There are 3 rows in 1 pages for object "sys.sysbinsubobjs".
DBCC results for 'sys.syssoftobjrefs'.
There are 0 rows in 0 pages for object "sys.syssoftobjrefs".
DBCC results for 'sys.fulltext_thesaurus_phrase_table'.
There are 0 rows in 0 pages for object "sys.fulltext_thesaurus_phrase_table".
DBCC results for '#0519C6AF'.
There are 0 rows in 0 pages for object "#0519C6AF".
DBCC results for '#09DE7BCC'.
There are 0 rows in 1 pages for object "#09DE7BCC".
DBCC results for '#0AD2A005'.
There are 0 rows in 1 pages for object "#0AD2A005".
DBCC results for '#0BC6C43E'.
There are 0 rows in 1 pages for object "#0BC6C43E".
DBCC results for '#1CF15040'.
There are 0 rows in 1 pages for object "#1CF15040".
DBCC results for '#2D27B809'.
There are 0 rows in 1 pages for object "#2D27B809".
DBCC results for '#2E1BDC42'.
There are 0 rows in 1 pages for object "#2E1BDC42".
DBCC results for '#2F10007B'.
There are 0 rows in 1 pages for object "#2F10007B".
DBCC results for '#300424B4'.
There are 0 rows in 1 pages for object "#300424B4".
DBCC results for '#31EC6D26'.
There are 0 rows in 0 pages for object "#31EC6D26".
DBCC results for 'sys.queue_messages_1977058079'.
There are 0 rows in 0 pages for object "sys.queue_messages_1977058079".
DBCC results for 'sys.queue_messages_2009058193'.
There are 0 rows in 0 pages for object "sys.queue_messages_2009058193".
DBCC results for 'sys.queue_messages_2041058307'.
There are 0 rows in 0 pages for object "sys.queue_messages_2041058307".
DBCC results for 'sys.filestream_tombstone_2073058421'.
There are 0 rows in 0 pages for object "sys.filestream_tombstone_2073058421".
DBCC results for 'sys.syscommittab'.
There are 0 rows in 0 pages for object "sys.syscommittab".
DBCC results for 'sys.service_broker_map'.
There are 14 rows in 1 pages for object "sys.service_broker_map".
DBCC results for 'sys.fulltext_thesaurus_metadata_table'.
There are 0 rows in 0 pages for object "sys.fulltext_thesaurus_metadata_table".
DBCC results for 'sys.fulltext_thesaurus_state_table'.
There are 0 rows in 0 pages for object "sys.fulltext_thesaurus_state_table".
CHECKDB found 0 allocation errors and 0 consistency errors in database 'tempdb'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
因而搜索一些外文資料,結果在下面兩篇文章瞭解了一下這個錯誤的緣由 : 3d
Attempt to fetch logical page (...) in database 2 failed. It belongs to allocation unit xxxx not to xxx是一個bug來的。雖然聲稱已經fix了,可是實際在SQL SERVER 2008 R2 SP1 、SP2都存在。而我這邊的版本剛好是SQL SERVER 2008 R2 SP2
下面摘取文章裏面討論的內容。看來很多人在不一樣版本中遇到過這類錯誤
由 dcrph127 在 2014/3/28 6:35 發送
I just received this same error in SQL Server 2008 R2 SP2.
由 Anatoly V. Popov 在 2013/2/14 3:04 發送
It seems, that issue fixed in Sql Server 2012 SP1 CU2
由 Atif-ullah Sheikh 在 2012/12/6 1:37 發送
I encountered this today on my production server. I am using temp tables in report procedures. Clustered Index resolved the issue but it is almost impossible for me to update all report procedures for this. I hope MS soon comes up with a hot fix to resolve this issue.
由 Anatoly V. Popov 在 2012/5/18 0:27 發送
We ran into it in Sql Server 2008 R2 SP1.
由 Erland Sommarskog 在 2011/2/3 14:44 發送
We ran into this today, big thanks to Richard Douglas for pointing me the solution. I've filed new bug with a repro for our case. https://connect.microsoft.com/SQLServer/feedback/details/641122/error-605-in-tempdb-on-sql-2008-r2-despite-bug-claims-to-be-fixed
由 Richard Douglas 在 2011/2/2 4:52 發送
There is still a problem on SQL Server 2008 SP2 with temp tables that do not have a clustered index as I encountered it this morning.
Microsoft SQL Server 2008 (SP2) - 10.0.4000.0 (X64) Sep 16 2010 19:43:16 Copyright (c) 1988-2008 Microsoft Corporation Developer Edition (64-bit) on Windows NT 6.0 <;X64> (Build 6002: Service Pack 2)
由 Stefan M 在 2010/10/8 14:03 發送
I'm encountering this problem as well in both SQL Server 2008 SP1 and SP2.
In my case the workaround did solve the problem.
Some additional info:
The temp table is created in a stored procedure which populates a SQL Server Reporting Services report dataset.
The stored procedure executes without warnings for me when manually running it in SQL Server Management Studio.
However, when trying to run the report (using identical parameters), I see a variant of the reported error message.
由 colin leversuch-roberts 在 2010/3/16 6:34 發送
Just to add I can't find the source as this is a working production system, maybe 400+ concurrent users; just upgraded from sql 2000 so absolutley no chance to locate cause at this time.
由 colin leversuch-roberts 在 2010/3/16 6:31 發送
sql 2008 sp1+cu2 ent x64 getting a batch of these errors so obviously not fixed in sp1 - always worrying to get any issues in a production system.
由 Mike Wade 在 2010/2/23 6:03 發送
Im getting the same thing with SP1.
SELECT @@VERSION.....
Microsoft SQL Server 2008 (SP1) - 10.0.2746.0 (X64) Nov 9 2009 16:37:47 Copyright (c) 1988-2008 Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 5.2 <;X64> (Build 3790: Service Pack 2) Microsoft SQL Server 2008 (SP1) - 10.0.2746.0 (X64) Nov 9 2009 16:37:47 Copyright (c) 1988-2008 Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 5.2 <X64> (Build 3790: Service Pack 2)
由 Aviel Iluz 在 2010/2/10 2:05 發送
In Service Pack 1 the is still occuring. Clustered index helps.
由 Microsoft 在 2010/1/15 於 11:16 公佈
Hi,
It appears after further investigation that this issue was already identified and was fixed in Service Pack 1.
Thanks again for taking the time to report the issue!
emily
由 dy5005 在 2009/10/28 16:40 發送
Add a clustered index works. Thanks.
由 Microsoft 在 2009/7/17 於 9:52 公佈
Hi,
Thanks for taking the time to send us your feedback. We're looking in to the issue, and will get back to you when we know more about it.
thanks,
Emily
解決方法:
解決這個問題,只須要對臨時表建立彙集索引。便可解決問題。我驗證過了,對這個存儲過程的臨時表建立彙集索引後,上面錯誤就不見了。
參考資料: