SQLServer置疑数据库解决方法有哪些?
1.SQLServer置疑数据库解决方法有哪些?
1。
首先确认已经备份了。mdf和。
ldf文件。 2。
在SQL Server中新建一个同名的数据库,然后停止SQL Server服务。 3。
用原有的。mdf和。
ldf文件覆盖新建数据库对应的。mdf和。
ldf文件。 4。
重新启动SQL Server服务,这是应该会看到这个数据库处于置疑(Suspect)状态。 5。
在SQL查询分析器中执行以下命令,以允许更新系统表: use master go sp_configure 'allow updates',1 reconfigure with override go 6。 将这个数据库置为紧急模式: update sysdatabases set status = 32768 where name = 'db_name' go 7。
使用DBCC CHECKDB命令检查数据库中的错误: DBCC CHECKDB('db_name') GO 8。 如果DBCC CHECKDB命令失败,请转至第10步,否则先将数据库置为单用户模式,再尝试对其进行修复: sp_dboption 'db_name','single user','true' DBCC CHECKDB('db_name', REPAIR_ALLOW_DATA_LOSS) GO 如果在执行DBCC CHECKDB('db_name', REPAIR_ALLOW_DATA_LOSS)命令时提示说数据库未处于单用户模式状态的话,则重新启动SQL Server服务,然后继续尝试。
9。 如果DBCC CHECKDB('db_name', REPAIR_ALLOW_DATA_LOSS)命令失败,请转至第10步,否则若成功修复了数据库中的错误: 重新执行DBCC CHECKDB('db_name')命令,确认数据库中已没有错误存在。
清除数据库的置疑状态:sp_resetstatus 'db_name' 清除数据库的单用户模式状态:sp_dboption 'db_name','single user','false' 重新启动SQL Server服务,如果一切正常的话,则数据库已经成功恢复。 10。
如果以上步骤都不能解决问题的话,请参考附件中的文档尝试通过重建事务日志来恢复数据库中的数据。如果您只有MDF文件,问题就更加复杂一些,我们需要直接重建事务日志了: 1。
在SQL Server中新建一个同名的数据库,然后停止SQL Server服务。 2。
用原有的ldf文件覆盖新建数据库对应的。mdf文件,将其日志文件(。
ldf)删除。 3。
启动SQL Server服务,并将数据库置为紧急模式(同上: 步骤5和步骤6)。 4。
停止并重新启动SQL Server服务。 5。
执行以下命令重建数据库日志文件:(下面是个示例,您要用您实际的数据库名) DBCC REBUILD_LOG('cas_db', 'D:cas_dbcas_db_Log。 LDF') 6。
重新将该数据库置为单用户模式。 7。
再次尝试使用DBCC CHECKTABLE或DBCC CHECKDB命令检查并修复数据库中的错误。
2.正在使用的SQL数据库突然断电后就置疑了,如何恢复?
先分离数据库 企业管理器--右键suspect的数据库--所有任务--分离数据库 然后备份你的suspect数据库的文件,再按下面的步骤处理: 1。
新建一个同名的数据库 2。 再停掉sql server 3。
用suspect数据库的文件覆盖掉这个新建的同名数据库 4。再重启sql server 5。
此时打开企业管理器时新建的同名数据库会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名) USE MASTER GO SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE GO UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='test' Go sp_dboption 'test', 'single user', 'true' Go DBCC CHECKDB('test') Go update sysdatabases set status =28 where name='test' Go sp_configure 'allow updates', 0 reconfigure with override Go sp_dboption 'test', 'single user', 'false' Go 6。 完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是,利用 数据库的脚本创建一个新的数据库,并将数据导进去就行了。
如果这样改不加数据库状态,你就把数据库导成一个新库来代替旧库吧 企业管理器--右键你的数据库--所有任务--导出数据 ? ? ? ? ?--目标标数据库选择新建 ? ? ? ? ?--选择"在两个sql数据库之间复制对象和数据" ? ? ? ? ?--把"包含扩展属性"选上,其他的根据需要选择 ? ? ? ? ?--最后完成。
3.怎样使用oradim恢复windows上的数据库
在Windows上如果系统崩溃了,数据文件、控制文件、日志文件等都还在,怎样来恢复Oracle数据库? 前几天重新安装了系统,正好需要恢复一下数据库。
如果软件也损失了,那么需要重新安装一下数据库软件。 很多人抱怨我的新书很少关于Windows的内容,实际上,Windows和Linux/Unix上的操作没有什么不同,Windows本身就是一个仿Unix的系统。
那么好吧,我还是用一个系列的文章介绍一下我所使用的Windows系统,以及我所认为的数据库系统无关性。 大家可以跟随我看一下这样一个过程。
首先开启一个cmd命令行窗口。 开始->运行->cmd 我的Oracle软件备份在D:\oracle : D:\>dir oracle 驱动器 D 中的卷是 PRIVAT 卷的序列号是 94B0-FD3B D:\oracle 的目录 2006-08-16 14:14 。
2006-08-16 14:14 。
2006-08-16 14:14 ora10gR2 0 个文件 0 字节 3 个目录 941,744,128 可用字节 我的数据文件位于D:\oradata下: D:\>dir d:\oradata 驱动器 D 中的卷是 PRIVAT 卷的序列号是 94B0-FD3B d:\oradata 的目录 2006-08-16 14:25 。 2006-08-16 14:25 。
2005-09-12 16:40 flash_recovery_area 2005-09-12 16:40 EYGLE 0 个文件 0 字节 4 个目录 941,744,128 可用字节 现在让我们用oradim创建一个实例,实际上也就是创建一个Windows服务: C:\>oradim -new -sid eygle 实例已创建。
我们用net命令可以查看系统启动了哪些服务,我们看到Oracle的服务已经启动: C:\>net start 已经启动以下 Windows 服务: 。
O&O Defrag OracleServiceeygle Plug and Play Print Spooler 。
命令成功完成。 如果你的系统装了一些Unix增强工具,那么可以通过grep过滤一下: C:\>net start |grep Oracle OracleServiceeygle Unix命令工具可以在Sourceforge (/projects/gnuwin32/) 下载。 此时我们就可以通过启动实例,挂接原有数据库,启动Oracle数据库了。
当然你可能还有一些其他工作 需要完成。
4.金蝶软件恢复数据
你好!
看你的问题挺急的,有个最简单方便的办法,你应该是先把电脑旧硬盘的数据全还原到新硬盘里,(这个不管你是用软件恢复还是请专业恢复的,基本上硬盘如果不是搞烂了里面的磁片,都是可以恢复回来的)。
然后,找到以前数据库路径,将数据库还原,最后回到帐套注册一下就行了。
像现在你搞成这样,就复杂了。一般数据库备份是BAK后缀的,并且要全备。你这个是MDF,那不是帐套(我忘记帐套后缀了)就是数据库实体。如果你附加不上数据库,就再找找你备份的BAK文件来还原。
数据库有还原和附加的,另外金蝶自己也有备份和恢复,你要搞清楚自己备份的是什么,备份完不完整。
最后实在不行,就用第一种办法吧,找数据还原公司,将旧硬盘的资料还原出来。不过挺贵的,我当时也是坏了硬盘,搞了一千多。但你如果只要一个文件,也很便宜的,主要是看你要还原资料的多少。
有点啰嗦了,别怪。希望能帮上你,谢谢!
5.如何将置疑的数据库恢复
备份数据文件,然后按下面的步骤处理: 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 假设数据库为TEST: 按以下步骤执行 A.设置数据库允许直接操作系统表。
此操作可以在SQL Server Enterprise Manager里面选择数据库服务器,按右键,选择“属性”,在“服务器设置”页面中将“允许对系统目录直接修改”一项选中。也可以使用如下语句来实现。
use master go sp_configure 'allow updates',1 go reconfigure with override go B.设置test为紧急修复模式 update sysdatabases set status=-32768 where dbid=DB_ID('test') 此时可以在SQL Server Enterprise Manager里面看到该数据库处于“只读\置疑\脱机\紧急模式”可以看到数据库里面的表,但是仅仅有系统表 C.下面执行真正的恢复操作,重建数据库日志文件 dbcc rebuild_log('test','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.ldf') 执行过程中,如果遇到下列提示信息: 服务器: 消息 5030,级别 16,状态 1,行 1 未能排它地锁定数据库以执行该操作。 DBCC 执行完毕。
如果 DBCC 输出了错误信息,请与系统管理员联系。 说明您的其他程序正在使用该数据库,如果刚才您在F步骤中使用SQL Server Enterprise Manager打开了test库的系统表,那么退出SQL Server Enterprise Manager就可以了。
正确执行完成的提示应该类似于: 警告: 数据库 'test' 的日志已重建。已失去事务的一致性。
应运行 DBCC CHECKDB 以验证物理一致性。将必须重置数据库选项,并且可能需要删除多余的日志文件。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
此时打开在SQL Server Enterprise Manager里面会看到数据库的状态为“只供DBO使用”。此时可以访问数据库里面的用户表了。
D.验证数据库一致性(可省略) dbcc checkdb('test') 一般执行结果如下: CHECKDB 发现了 0 个分配错误和 0 个一致性错误(在数据库 'test' 中)。 DBCC 执行完毕。
如果 DBCC 输出了错误信息,请与系统管理员联系。 E.设置数据库为正常状态 sp_dboption 'test','dbo use only','false' 如果没有出错,那么恭喜,现在就可以正常的使用恢复后的数据库啦。
F.最后一步,我们要将步骤E中设置的“允许对系统目录直接修改”一项恢复。因为平时直接操作系统表是一件比较危险的事情。
当然,我们可以在SQL Server Enterprise Manager里面恢复,也可以使用如下语句完成 sp_configure 'allow updates',0 go reconfigure with override go 上面的语句操作步骤有点问题: 应该如下: A.我们使用默认方式建立一个供恢复使用的数据库(如test)。可以在SQL Server Enterprise Manager里面建立。
B.停掉数据库服务器。 C.将刚才生成的数据库的日志文件test_log.ldf删除,用要恢复的数据库mdf文件覆盖刚才生成的数据库数据文件test_data.mdf。
D.启动数据库服务器。此时会看到数据库test的状态为“置疑”。
这时候不能对此数据库进行任何操作。 E.设置数据库允许直接操作系统表。
此操作可以在SQL Server Enterprise Manager里面选择数据库服务器,按右键,选择“属性”,在“服务器设置”页面中将“允许对系统目录直接修改”一项选中。也可以使用如下语句来实现。
use master go sp_configure 'allow updates',1 go reconfigure with override go F.设置test为紧急修复模式 update sysdatabases set status=-32768 where dbid=DB_ID('test') 此时可以在SQL Server Enterprise Manager里面看到该数据库处于“只读\置疑\脱机\紧急模式”可以看到数据库里面的表,但是仅仅有系统表 G.下面执行真正的恢复操作,重建数据库日志文件 dbcc rebuild_log('test','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.ldf') 执行过程中,如果遇到下列提示信息: 服务器: 消息 5030,级别 16,状态 1,行 1 未能排它地锁定数据库以执行该操作。 DBCC 执行完毕。
如果 DBCC 输出了错误信息,请与系统管理员联系。 说明您的其他程序正在使用该数据库,如果刚才您在F步骤中使用SQL Server Enterprise Manager打开了test库的系统表,那么退出SQL Server Enterprise 。