谁是卖火柴的,快来急救一个

jianlinlong 2004-09-14 05:34:32
我的一个sql server的mdf文件被损坏了,表现为:
我用将此文件attach到数据库后,一些表能打开,一些表则不能读出(错误对话框提示:
[Microsoft][ODBC SQL SERVER Driver]Communication link failure), 用dbcc checkdb来检测显示:

服务器: 消息 8966,级别 16,状态 1,行 1
未能读取并闩锁页 (1:6284)(用闩锁类型 SH)。sysindexes 失败。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。

另还发现系统表sysindexes,sysindexkeys不能打开,执行sp_helpindex也出错.

用DBCC CHECKTABLE('dbo.操作员'), 也出错:

服务器: 消息 823,级别 24,状态 2,行 1
连接中断
--------------------------------------------------------------------------
在csdn搜索了半天,无果, 看了原来的帖子说"卖火柴的"特神,"他说没救了就没救了",故特此提问.

有办法恢复吗?
...全文
205 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
LJWS 2004-09-15
  • 打赏
  • 举报
回复
up again
jianlinlong 2004-09-15
  • 打赏
  • 举报
回复
再顶
jianlinlong 2004-09-15
  • 打赏
  • 举报
回复
发现在isql中所有读不出的表都报这个错误:

Msg 823, Level 24, State 2, Server JLL, Line 1
I/O error (bad page ID) detected during read at offset 0x00000000eea000 in file
'g:\d_OK_Data.MDF'

是不是能修复这个地址呢?
企盼高人啊
windy2008 2004-09-15
  • 打赏
  • 举报
回复
UP
jianlinlong 2004-09-15
  • 打赏
  • 举报
回复
to icevi(按钮工厂):

是啊,我用企业管理器打不开,报823错误! 用分析器才能打开,但是只有一部分表能读出,另一些表则不能读出了. 惨!没有备份呀

我又尝试用isql来尝试,结果如下:

Msg 823, Level 24, State 2, Server JLL, Line 1
Msg 823, Level 24, State 2, Server JLL, Line 1
I/O error (bad page ID) detected during read at offset 0x00000000eea000 in file
'g:\d_OK_Data.MDF'.

谁有修复mdf头文件的工具呢?
xiaotu2000 2004-09-15
  • 打赏
  • 举报
回复
祝好运!
icevi 2004-09-15
  • 打赏
  • 举报
回复
我原来也遇到过差不多类似的问题,也是报“未能读取并闩锁页”这样的错误,但好象没有你这个严重,很怪的是好象对前台程序的运行没有影响,只是用企业管理器不能打开表进行查看。

你试下用把数据导出看一看?也许可以导出成功。

我原来也因为这个上来发过贴子,没有结果:)。后来只有恢复备份。

祝你好运!
jianlinlong 2004-09-15
  • 打赏
  • 举报
回复
555,看来真的没救了!

~~~谁敢比我惨啦~~~~~~~~~~~~~
zjcxc 元老 2004-09-14
  • 打赏
  • 举报
回复
那看来没有什么办法了,建新库导数据吧,能恢复多少就看你的运气了.
jianlinlong 2004-09-14
  • 打赏
  • 举报
回复
to zjcxc(邹建):

执行结果如下
------------------------------------------------------------
服务器: 消息 8966,级别 16,状态 1,行 2
未能读取并闩锁页 (1:6284)(用闩锁类型 SH)。sysindexes 失败。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
'本月抄见' 的 DBCC 结果。
对象 '本月抄见' 有 10593 行,这些行位于 129 页中。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
'电表结算' 的 DBCC 结果。
对象 '电表结算' 有 319408 行,这些行位于 11841 页中。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
'馈路' 的 DBCC 结果。
对象 '馈路' 有 17 行,这些行位于 1 页中。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
'变电所' 的 DBCC 结果。
对象 '变电所' 有 1 行,这些行位于 1 页中。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
服务器: 消息 823,级别 24,状态 2,行 1

ODBC: 消息 0,级别 16,状态 1
Communication link failure

连接中断
-------------------------------------------------------------
再次打开原来打不开的"操作员"表, 出现对话框:
由于数据移动,未能继续以NoLock方式扫描.

惨了, 能搜索到的方法都试了,还是不行. 那些打不开的表中有重要数据啊
netcoder 2004-09-14
  • 打赏
  • 举报
回复
说明:
执行 DBCC CHECKDB 时将对数据库内的每个表自动执行 DBCC CHECKTABLE 和 DBCC CHECKALLOC,因而不必单独运行这两个语句。

apple800 2004-09-14
  • 打赏
  • 举报
回复
收缩一下数据库看看。
zjcxc 元老 2004-09-14
  • 打赏
  • 举报
回复
如果不行,则新建一个结构一样的库,把可以导的数据导到新库中,用新库代替旧库
zjcxc 元老 2004-09-14
  • 打赏
  • 举报
回复
--试试

USE MASTER
GO

sp_dboption '你的数据库名', 'single user', 'true'
Go

DBCC CHECKDB('你的数据库名', REPAIR_ALLOW_DATA_LOSS)
Go

USE 你的数据库名
go

exec sp_msforeachtable 'DBCC CHECKTABLE(''?'',REPAIR_ALLOW_DATA_LOSS)'
exec sp_msforeachtable 'DBCC DBREINDEX(''?'')'
go

sp_dboption '你的数据库名', 'single user', 'false'
Go

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧