我对数据库AA执行了如下语句:
delete from sysobjects
go
误删除之后数据库AA状态变为置疑,后执行如下语句:
DBCC CHECKDB('AA')
go
系统提示:
服务器: 消息 906,级别 22,状态 1,行 1
未能在 sysobjects 中找到数据库 'AA' 中系统目录 'sysindexes' 所对应的行。这一系统目录应存在于所有数据库中。请对此数据库中的 sysobjects 运行 DBCC CHECKTABLE。
连接中断
数据库AA的日志文件(LDF)、数据文件(mdf)都存在,高手帮忙如何修复此数据库。多谢!在线等。
这个问题第1个回答:
up
这个问题第2个回答:
执行如下语句后:
use AA
go
declare @dbname varchar(255)
go
set @dbname='AA'
go
exec sp_dboption @dbname,'single user','true'
go
dbcc checktable('Sysobjects',REPAIR_ALLOW_DATA_LOSS)
go
dbcc checktable('Sysobjects',REPAIR_REBUILD)
go
exec sp_dboption @dbname,'single user','false'
go
系统还是提示:
服务器: 消息 906,级别 22,状态 2,行 1
未能在 sysobjects 中找到数据库 'EDC_IN' 中系统目录 'Sysobjects' 所对应的行。这一系统目录应存在于所有数据库中。请对此数据库中的 sysobjects 运行 DBCC CHECKTABLE。
ODBC: 消息 0,级别 16,状态 1
通讯链接失败
连接中断
这个问题第3个回答:
我彻底哭了,竟然没有一个高人给以指点?有没有人知道通过日志文件来恢复啊,不完全恢复,至少能恢复几个表的数据已经非常感谢了。
这个问题第4个回答:
用log explorer undo
这个问题第5个回答:
我下载了LOG Explorer ,安装之后运行,附加日志文件时,还是提醒:
未能在 sysobjects 中找到数据库 'AA' 中系统目录 'sysindexes' 所对应的行。这一系统目录应存在于所有数据库中。请对此数据库中的 sysobjects 运行 DBCC CHECKTABLE。
我实在太痛苦了。。。。。。
我把所有分全部散出去了,四处发帖,谁能帮帮我啊?
这个问题第6个回答:
系统表默认是不允许被删除数据的。
是不是在删除之前执行了sp_configure ?
是sql2000吧,另外,有无备份呢 ?
并且,现在最好不要进行可能引发变动的操作,找到可行方案后再进行。
这个问题第7个回答:
微软既然放开口子让别人操作sysobjects表,那么他就应该有解决误删除sysobjects表数据的方法,通过SQL 内置的存储过程也许可以重建sysobjects表,只是那么多存储过程我们不知道到底哪一个是罢了。
另外补充:我就是执行了
delete from sysobjects
go
这一句,并未执行sp_configure
SQL2000企业版,无备份。
谁有类似经历,希望能给予指点,再次谢过!!
这个问题第8个回答:
你们公司愿意出费用吗?要是愿意,联系我。
这个问题第9个回答:
How much?不会超过我找微软的服务费用吧?大家既然都是在上面混的,你懂得,证明你厉害,你高手,动辄谈钱是不是有些过了。这里毕竟是大家交流的地方,不是交易买卖的地方。我相信会有高手不在乎金钱,而愿意提供一份支持的。
这个问题第10个回答:
呵呵,技术支持也是有限度的,你这个问题要是能免费帮你,也会的,可惜你的这个问题有些难度。
这个问题第11个回答:
楼上的,你把这里当作你交易的场所了?你那么想拉单,那我替你做做广告好了。
dlcyj
7 小时前
要是公司能出费用,联系我。 加我QQ,287671378
上面是所谓的高手DLCYJ给我的留言。我仔细观察了,他自始至终没有给过任何建议,哪怕是一点点最基础的东西都没有,他就是不停的在说,如果掏钱我高手就帮你解决了。
这种人!就算是我愿意掏钱,我也不会找你做,因为你连做业务最基本的道理都不懂,只肯给客户提钱,那个客户愿意跟你打交道。看来你也只是适合做技术了。
这个问题第12个回答:
你都没有搞清楚你的故障是什么,我问你公司要是能出费用,联系我,没有向你个人要钱吧。不想做,你就不联系。这有什么。
答复你的:“只肯给客户提钱,那个客户愿意跟你打交道。看来你也只是适合做技术了。”
你不是做技术的,你来这里做什么。你在贬低技术的同时,也是在贬低自己。
这个问题第13个回答:
不要讨论这些问题了.有做过的,提点建议和意见,能顺手帮忙的,就帮个忙就是了,都是出来混的!
楼主的问题总结下:
1、数据库AA的日志文件(LDF)、数据文件(mdf)都存在
2、sysobjects被删除了,没有备份;
3、数据库已经破坏,启不来
这个问题第14个回答:
楼主:什么os,数据文件在哪个盘?
这个问题第15个回答:
帮您找了篇字资料,看看是否有帮助:
http://www.net0791.com/article/135954.htm
通过 dbcc 修复下数据库
--------------------------------------------------------------------------------
备份数据文件,然后按下面的步骤处理:
1.新建一个同名的数据库(数据文件与原来的要一致)
2.再停掉sql server(注意不要分离数据库)
3.用原数据库的数据文件覆盖掉这个新建的数据库
4.再重启sql server
5.此时打开企业管理器时会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名)
6.完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是,利用
数据库的脚本创建一个新的数据库,并将数据导进去就行了.
USE MASTER
GO
SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE
GO
UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='置疑的数据库名'
Go
sp_dboption '置疑的数据库名', 'single user', 'true'
Go
DBCC CHECKDB('置疑的数据库名')
Go
update sysdatabases set status =28 where name='置疑的数据库名'
Go
sp_configure 'allow updates', 0 reconfigure with override
Go
sp_dboption '置疑的数据库名', 'single user', 'false'
Go
--------------------------------------------------------------------------------
你可以使用只有mdf的数据文件进行恢复操作,然后再进行dbcc检查。(假设数据库为test,路径为'C:\Program Files\Microsoft SQL Server\MSSQL\data下)
@@只有mdf文件的恢复技术
sp_attach_single_file_db可以恢复数据库,但是会出现类似下面的提示信息
设备激活错误。物理文件名 'C:\Program Files\Microsoft SQL Server\MSSQL\data\test_Log.LDF' 可能有误。
已创建名为 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.LDF' 的新日志文件。
也许会得到类似下面的错误信息
服务器: 消息 1813,级别 16,状态 2,行 1
未能打开新数据库 'test'。CREATE DATABASE 将终止。
设备激活错误。物理文件名 'd:\test_log.LDF' 可能有误。
别着急,下面我们举例说明恢复办法。
A.我们使用默认方式建立一个供恢复使用的数据库(如test)。可以在SQL Server Enterprise Manager里面建立。
B.停掉数据库服务器。
C.将刚才生成的数据库的日志文件test_log.ldf删除,用要恢复的数据库mdf文件覆盖刚才生成
[1] [2] 下一页