分全部给了!误删除了表sysobjects中的数据后,如何恢复,有日志文件。在线等 100Tikyliu]

发布时间:2017-3-25 5:45:51 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"分全部给了!误删除了表sysobjects中的数据后,如何恢复,有日志文件。在线等 100Tikyliu]",主要涉及到分全部给了!误删除了表sysobjects中的数据后,如何恢复,有日志文件。在线等 100Tikyliu]方面的内容,对于分全部给了!误删除了表sysobjects中的数据后,如何恢复,有日志文件。在线等 100Tikyliu]感兴趣的同学可以参考一下。

我对数据库AA执行了如下语句:  delete from sysobjects  go  误删除之后数据库AA状态变为置疑,后执行如下语句:  DBCC CHECKDB('AA')  go  系统提示:  服务器: 消息 906,级别 22,状态 1,行 1  未能在 sysobjects 中找到数据库 'AA' 中系统目录 'sysindexes' 所对应的行。这一系统目录应存在于所有数据库中。请对此数据库中的 sysobjects 运行 DBCC CHECKTABLE。  连接中断  执行dbcc checktable如下语句后:  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  通讯链接失败  连接中断 有没有人知道通过日志文件来恢复啊,不完全恢复,至少能恢复几个表的数据已经非常感谢了!高人们,救命啊。

去找下这个工具 LOG Explorer 试下

 把所有数据库重新 附加一次

LOG Explorer 

我下载了LOG Explorer ,安装之后运行,附加日志文件时,还是提醒: 未能在 sysobjects 中找到数据库 'AA' 中系统目录 'sysindexes' 所对应的行。这一系统目录应存在于所有数据库中。请对此数据库中的 sysobjects 运行 DBCC CHECKTABLE。 我实在太痛苦了。。。。。。

引用 4 楼 Tikyliu 的回复:我下载了LOG Explorer ,安装之后运行,附加日志文件时,还是提醒:  未能在 sysobjects 中找到数据库 'AA' 中系统目录 'sysindexes' 所对应的行。这一系统目录应存在于所有数据库中。请对此数据库中的 sysobjects 运行 DBCC CHECKTABLE。  我实在太痛苦了。。。。。。 记得有个 Log Explorer 中有个直接打开日志文件的

如果你有备份, 可以将它还原成一个新的数据库(还原的时候指定新的名称, 并使用WITH MOVE 选项指定新的文件位置) 然后从还原折库中提到 sysobjects 的内容插入到你出问题的库中

多谢楼上的几位,非常感谢,一摸一样表结构的库我有好几个,我也尝试过这样操作: select * into AA.DBO.sysobjects from BB.DBO.sysobjects go 其中库AA与库BB结构完全一致,唯一不同的是AA中有数据,BB中无数据。 但是一样如此提示: 未能在 sysobjects 中找到数据库 'AA' 中系统目录 'sysindexes' 所对应的行。这一系统目录应存在于所有数据库中。请对此数据库中的 sysobjects 运行 DBCC CHECKTABLE。  我现在遇到的问题就是我在查询分析器中能看到该库,但是不能直接打开查看表,一点击就出现上面的提示。然后除了看到这个库,我不能用SQL语句查看或者进行任何操作,甚至连SELECT都不行,在该库上一执行SQL语句,就出现以上提示,搞得我实在是浇头烂额,可是不管怎样,还是要感谢楼上几位给出意见。多谢!!

我想现在唯一能解决问题的可能就是: 利用SQL内置存储过程,重建库AA的SYSOBJECTS表。但是SQL内置存储过程那么多,我也不知道到底哪一个才是。微软为此应该有解决方式的。

就如上面所说,看你有没有备份数据库了吧 把你的数据库本地恢复一个,然后将本地的sysobjects更新到服务器的sysobjects里,如果有少量的字段更新,手工处理下就行。只要不是带有什么索引、约束、关系什么的,就影响不大。 或本地个数据库恢复,然后把日志加载更新本地数据,用log explorer打开delete from sysobjects执行时间段的日志,找到执行语句,undo即可。 如果没有备份可能麻烦了,上面有人说直接打开SQL日志估计是不可能的。

log explorer

1. delete the crashed database 2. create a new database has the same name and same file path with the old database  setting 3. shutdown the SQL Server service 4. copy the old database file and replace the new database file 5. restart the SQL server

没有其他方法,找备份吧。。。

备份

把日志备份出来,联合最新的一个full backup把数据恢复到你误操作之前的时间点上

不是都接帖了吗?

UP 6楼,如果没有 抱歉 物理文件删除..  汗..

但是SQL Server 2005是不允许删除系统表的嘛。

备份数据库

up

上一篇:如何根据存储过程的名字,用java程序来判断该存储过程是否返回结果集*((数据库为sqlserver 2008 20jinfengpu]
下一篇:大家来探讨下腾讯公司的老板是如何管理q币的,怎么做到q币的安全,不让内部人员进行篡改的 20fjwzw]

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款