Attempt to fetch logical page (...) in database 2 failed. It belongs to allocation unit xxxx not to xxx

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
简介:

今天一个同事说在一个生产库执行某个存储过程,遇到了错误: Fatal error 605 occurred at jul 29 2014

clipboard

我试着执行该存储过程,结果出现下面错误,每次执行该存储过程,得到的错误内容都不一样(page变化,还有就是allocation unit)变化

消息 605,级别 21,状态 3,过程 usp_xxxxxxxxx,第 228 行

Attempt to fetch logical page (7:121808) in database 2 failed. It belongs to allocation unit 8358680970783621120 not to 5332262008984567808.

 

消息 605,级别 21,状态 3,过程 usp_xxxxxxxxx,第 228 行

Attempt to fetch logical page (3:122376) in database 2 failed. It belongs to allocation unit 8574853753020284928 not to 5332262008984567808.

 

消息 605,级别 21,状态 3,过程 usp_xxxxxxxxx,第 228 行

Attempt to fetch logical page (7:394) in database 2 failed. It belongs to allocation unit 7782220197180997632 not to 1297036693380923392.

第一次遇到这个问题,首先我想到的是是否数据库tempdb是否有一致性错误问题,因为tempdb的database_id为2.于是我对tempdb数据库做了dbcc checkb 完整一致性检查,结果如下所示,没有发现任何问题。

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. 
 

于是搜索一些外文资料,结果在下面两篇文章了解了一下这个错误的原因

http://connect.microsoft.com/SQLServer/feedback/details/469811/attempt-to-fetch-logical-page-in-database-2-failed-it-belongs-to-allocation-unit-not-to

https://connect.microsoft.com/SQLServer/feedback/details/641122/error-605-in-tempdb-on-sql-2008-r2-despite-bug-claims-to-be-fixed

 

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

clipboard[1]

 

下面摘取文章里面讨论的内容。看来不少人在不同版本中遇到过这类错误

由 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

解决方法:

    解决这个问题,只需要对临时表创建聚集索引。即可解决问题。我验证过了,对这个存储过程的临时表创建聚集索引后,上面错误就不见了。

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
相关文章
|
存储 前端开发 Java
【Java】If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
【Java】If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
507 0
|
XML 关系型数据库 MySQL
已解决Failed to connect mysql database,please check username and password,or mysql is version8? true
已解决Failed to connect mysql database,please check username and password,or mysql is version8? true
365 0
|
关系型数据库 MySQL 数据库
Idea 连接数据库出错Connection to xxx@localhost failed. [08001] Could not create connection to database
Idea 连接数据库出错Connection to xxx@localhost failed. [08001] Could not create connection to database
407 0
Idea 连接数据库出错Connection to xxx@localhost failed. [08001] Could not create connection to database
|
关系型数据库 数据库
ORA-01501: CREATE DATABASE failed
使用dbca建库时遇到ORA-01501: CREATE DATABASE failed这个错误,检查告警日志,发现有下面错误信息: SMON: enabling tx recovery Fri Apr 29 14:06:25 HKT 2016 replication_dependenc...
2175 0
|
关系型数据库 数据库 PostgreSQL
|
数据库 内存技术
ORA-38760: This database instance failed to turn on flashback database 第三篇
ORA-38760: This database instance failed to turn on flashback database  第三篇   第一篇 第二篇 问题现象:      在数据库alert告警日志中看见如下信息:...
1159 0