欢迎来到天天文库
浏览记录
ID:47547323
大小:81.50 KB
页数:13页
时间:2020-01-14
《SQL2000数据库MDF损坏修复》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、sqlserver2000文件中,ldf损坏了,但mdf还在,总结一下恢复方法:1)先及时把原来的数据库文件(如test.mdf)备份到其他地方2)停掉服务器3)删除这个test.mdf4)重新建立一个test同名数据库5)删除这个新建立的test数据库的test.ldf文件,并用开始备份好的test.mdf文件覆盖这个新建立的test.mdf文件6)启动数据库服务器。此时会看到数据库test的状态为“置疑”。这时候不能对此数据库进行任何操作。.设置数据库允许直接操作系统表。此操作可以在SQLServerEnterpriseManager里面选
2、择数据库服务器,按右键,选择“属性”,在“服务器设置”页面中将“允许对系统目录直接修改”7)设置test为紧急修复模式 updatesysdatabasessetstatus=-32768wheredbid=DB_ID('test') 此时可以在SQLServerEnterpriseManager里面看到该数据库处于“只读置疑脱机紧急模式”可以看到数据库里面的表,但是仅仅有系统表8下面执行真正的恢复操作,重建数据库日志文件 dbccrebuild_log('test','C:ProgramFilesMicrosoftSQLSer
3、verMSSQLDatatest_log.ldf') 执行过程中,如果遇到下列提示信息: 服务器:消息5030,级别16,状态1,行1 未能排它地锁定数据库以执行该操作。 DBCC执行完毕。如果DBCC输出了错误信息,请与系统管理员联系。 说明您的其他程序正在使用该数据库,如果刚才您在F步骤中使用SQLServerEnterpriseManager打开了test库的系统表,那么退出SQLServerEnterpriseManager就可以了。 正确执行完成的提示应该类似于: 警告:数据库'test'的日志已重建。已失去事务的
4、一致性。应运行DBCCCHECKDB以验证物理一致性。将必须重置数据库选项,并且可能需要删除多余的日志文件。 DBCC执行完毕。如果DBCC输出了错误信息,请与系统管理员联系。 此时打开在SQLServerEnterpriseManager里面会看到数据库的状态为“只供DBO使用”。此时可以访问数据库里面的用户表了。9.验证数据库一致性 dbcccheckdb('test')10.设置数据库为正常状态 sp_dboption'test','dbouseonly','false' 如果没有出错,那么恭喜,现在就可以正常的使用恢复后的数据
5、库啦。11最后一步,我们要将步骤E中设置的“允许对系统目录直接修改”一项恢复--以下是邹老大写的,楼主可以参考下SQLcodeUSEmaster--创建数据库CREATEDATABASEdbONPRIMARY(NAME='db_data',FILENAME='c:db_data.mdf'),FILEGROUPdb_fg1(NAME='db_fg1_data',FILENAME='c:db_fg1_data.ndf'),FILEGROUPdb_fg2(NAME='db_fg2_data',FILENAME='c:db_fg2_data.nd
6、f')LOGON(NAME='db_log',FILENAME='c:db.ldf')GO--创建表CREATETABLEdb.dbo.ta(idint)ON[PRIMARY]CREATETABLEdb.dbo.tb(idint)ONdb_fg1CREATETABLEdb.dbo.tc(idint)ONdb_fg2INSERTdb.dbo.tbSELECTidFROMsysobjectsGO--做文件组备份BACKUPDATABASEdbFILEGROUP='db_fg1'TODISK='c:db_fg1.bak'WITHFORMAT--备
7、份后,再做数据处理INSERTdb.dbo.taSELECTidFROMsysobjectsGO/*--下面演示了破坏数据文件的处理,这些操作在操作系统中进行1.停止SQLServer服务(msqlserver服务)2.删除文件c:db_fg1_data.ndf(模拟破坏)3.重新SQLServer服务,此时数据库DB置疑--*/GO--下面演示了如何恢复数据--首先要备份当前日志BACKUPLOGdbTODISK='c:db_log.bak'WITHFORMAT,NO_TRUNCATE--利用文件组备份恢复破坏的文件RESTOREDATA
8、BASEdbFILEGROUP='db_fg1'FROMDISK='c:db_fg1.bak'WITHNORECOVERY--还原到日志点RESTO
此文档下载收益归作者所有