首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何拍摄SQL错误823?

如何拍摄SQL错误823?
EN

Database Administration用户
提问于 2014-08-21 09:23:54
回答 1查看 1.9K关注 0票数 2

我有一个笔记本电脑模具HDD死了,一个正在运行的sql数据库被打开了(在程序中),我不得不让硬盘恢复,但是我得到的只是一个坏的数据库,它已经撕破了页面。所有专业的软件接缝,以能够读取我的数据库和修复,如果我支付399.00的软件,但我希望我可以使用内置的DBCC,但它缝所有我尝试不起作用,所以我希望得到一些帮助。以下是我试图将数据库联机时的错误

由于无法访问文件或内存或磁盘空间不足,无法打开Msg 945、14级、状态2、第1行数据库“CompassDefaultDB”。有关详细信息,请参阅Server错误日志。Msg 5069,级别16,状态1,第1行ALTER语句失败。Msg 824、24级、状态2、第1行SQL Server检测到基于逻辑一致性的I/O错误:不正确的校验和(预期: 0x20203e65;实际: 0x1f329010)。这是在读取数据库ID 5中的页(1:9)时发生的,偏移量为0x00000000012000,位于文件'C:\Program \Microsoft Server\MSSQL.2\MSSQL\Data\CompassDefaultDB_51120120410_data.mdf'.中。Server错误日志或系统事件日志中的其他消息可能会提供更多细节。这是一个严重的错误情况,威胁到数据库的完整性,必须立即纠正。完成完整的数据库一致性检查(DBCC )。此错误可能是由许多因素造成的;有关详细信息,请参阅Server联机丛书。

所以我试着

代码语言:javascript
运行
复制
DBCC CHECKDB (CompassDefaultDB, REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS;

那让我

由于无法访问文件或内存或磁盘空间不足,无法打开Msg 945、14级、状态2、第1行数据库“CompassDefaultDB”。有关详细信息,请参阅Server错误日志。

所以我试着

代码语言:javascript
运行
复制
ALTER DATABASE CompassDefaultDB SET EMERGENCY;

Msg 824、24级、状态2、第1行SQL Server检测到基于逻辑一致性的I/O错误:不正确的校验和(预期: 0x20203e65;实际: 0x1f329010)。这是在读取数据库ID 5中的页(1:9)时发生的,偏移量为0x00000000012000,位于文件'C:\Program \Microsoft Server\MSSQL.2\MSSQL\Data\CompassDefaultDB_51120120410_data.mdf'.中。Server错误日志或系统事件日志中的其他消息可能会提供更多细节。这是一个严重的错误情况,威胁到数据库的完整性,必须立即纠正。完成完整的数据库一致性检查(DBCC )。此错误可能是由许多因素造成的;有关详细信息,请参阅Server联机丛书。

然后

代码语言:javascript
运行
复制
DBCC CHECKDB (CompassDefaultDB, REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS;

Msg 922,14级,状态1,第1行数据库'CompassDefaultDB‘正在恢复。等待恢复完成。

它将永远停留在这种模式下,并且不需要seam来完成这个数据库,它只有2MB,我想要的是17行数据。我可以重新启动sql服务器,并以相同的结果重复相同的步骤。我做错什么了吗?任何帮助都是徒劳无功的

我确实有原始损坏的数据库,并试图恢复和重复,但以相同的结果,我还试图打开一个数据库的同名,删除mdf文件,并以相同的基本结果替换我。没有备份:(再次感谢您查找

EN

回答 1

Database Administration用户

回答已采纳

发布于 2014-08-21 09:57:19

试图修复数据库是没有帮助的。第1:9页是一个系统对象,系统对象不能修复。您需要编写表的脚本并创建一个新的数据库。然后在新数据库中创建表,并将数据复制到新数据库中。

如果数据库无法打开,可以尝试使用ALTER SET emergency将其设置为紧急模式,这可能会使数据库联机。如果你这么做了,你可以把数据写出来。否则你就完蛋了。

如果你有后援..。另一种选择是将数据库还原到页面损坏之前的某个时间点。如果您有一个来自很远的备份,您可以还原该备份,然后向前滚动事务日志,您应该能够回到一个状态,在那里您拥有所有的当前数据,而没有损坏。

票数 4
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/74535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档