SQL2000数据库MDF损坏修复(参考仅供)

上传人:汽*** 文档编号:544856409 上传时间:2023-06-24 格式:DOC 页数:14 大小:68KB
返回 下载 相关 举报
SQL2000数据库MDF损坏修复(参考仅供)_第1页
第1页 / 共14页
SQL2000数据库MDF损坏修复(参考仅供)_第2页
第2页 / 共14页
SQL2000数据库MDF损坏修复(参考仅供)_第3页
第3页 / 共14页
SQL2000数据库MDF损坏修复(参考仅供)_第4页
第4页 / 共14页
SQL2000数据库MDF损坏修复(参考仅供)_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《SQL2000数据库MDF损坏修复(参考仅供)》由会员分享,可在线阅读,更多相关《SQL2000数据库MDF损坏修复(参考仅供)(14页珍藏版)》请在金锄头文库上搜索。

1、sql server 2000文件中,ldf损坏了,但mdf还在,总结一下恢复方法:1)先及时把原来的数据库文件(如test.mdf)备份到其他地方2) 停掉服务器3) 删除这个test.mdf4) 重新建立一个test同名数据库5)删除这个新建立的test数据库的test.ldf文件,并用开始备份好的test.mdf文件覆盖这个新建立的test.mdf文件6)启动数据库服务器。此时会看到数据库test的状态为“置疑”。这时候不能对此数据库进行任何操作。 .设置数据库允许直接操作系统表。此操作可以在SQL Server Enterprise Manager里面选择数据库服务器,按右键,选择“属

2、性”,在“服务器设置”页面中将“允许对系统目录直接修改”7) 设置test为紧急修复模式update sysdatabases set status=-32768 where dbid=DB_ID(test)此时可以在SQL Server Enterprise Manager里面看到该数据库处于“只读置疑脱机紧急模式”可以看到数据库里面的表,但是仅仅有系统表8 下面执行真正的恢复操作,重建数据库日志文件dbcc rebuild_log(test,C:Program FilesMicrosoft SQL ServerMSSQLDatatest_log.ldf)执行过程中,如果遇到下列提示信息:服

3、务器: 消息 5030,级别 16,状态 1,行 1未能排它地锁定数据库以执行该操作。DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。说明您的其他程序正在使用该数据库,如果刚才您在F步骤中使用SQL Server Enterprise Manager打开了test库的系统表,那么退出SQL Server Enterprise Manager就可以了。正确执行完成的提示应该类似于:警告: 数据库 test 的日志已重建。已失去事务的一致性。应运行 DBCC CHECKDB 以验证物理一致性。将必须重置数据库选项,并且可能需要删除多余的日志文件。DBCC 执行完毕。如果 D

4、BCC 输出了错误信息,请与系统管理员联系。此时打开在SQL Server Enterprise Manager里面会看到数据库的状态为“只供DBO使用”。此时可以访问数据库里面的用户表了。9 .验证数据库一致性dbcc checkdb(test)10 .设置数据库为正常状态sp_dboption test,dbo use only,false如果没有出错,那么恭喜,现在就可以正常的使用恢复后的数据库啦。11 最后一步,我们要将步骤E中设置的“允许对系统目录直接修改”一项恢复-以下是邹老大写的,楼主可以参考下SQL code USE master -创建数据库 CREATE DATABASE

5、db ON PRIMARY( NAME=db_data, FILENAME= c:db_data.mdf), FILEGROUP db_fg1( NAME = db_fg1_data, FILENAME = c:db_fg1_data.ndf),FILEGROUP db_fg2( NAME = db_fg2_data, FILENAME = c:db_fg2_data.ndf) LOG ON( NAME=db_log, FILENAME =c:db.ldf) GO -创建表 CREATE TABLE db.dbo.ta(id int) ON PRIMARY CREATE TABLE db.db

6、o.tb(id int) ON db_fg1 CREATE TABLE db.dbo.tc(id int) ON db_fg2 INSERT db.dbo.tb SELECT id FROM sysobjects GO-做文件组备份 BACKUP DATABASE db FILEGROUP=db_fg1 TO DISK=c:db_fg1.bak WITH FORMAT -备份后,再做数据处理 INSERT db.dbo.ta SELECT id FROM sysobjects GO /*-下面演示了破坏数据文件的处理,这些操作在操作系统中进行 1. 停止SQL Server服务(msqlser

7、ver服务) 2. 删除文件 c:db_fg1_data.ndf (模拟破坏) 3. 重新SQL Server服务,此时数据库DB置疑 -*/ GO -下面演示了如何恢复数据 -首先要备份当前日志 BACKUP LOG db TO DISK=c:db_log.bak WITH FORMAT,NO_TRUNCATE -利用文件组备份恢复破坏的文件 RESTORE DATABASE db FILEGROUP=db_fg1 FROM DISK=c:db_fg1.bak WITH NORECOVERY -还原到日志点 RESTORE LOG db FROM DISK=c:db_log.bak WITH

8、 RECOVERY -显示已经恢复的数据 SELECT COUNT(*) FROM db.dbo.tb SELECT COUNT(*) FROM db.dbo.ta GO -删除测试 DROP DATABASE dbMSSQL数据库损坏的修复命令DBCC简介DBCC命令能对数据库进行维护,重点介绍内容:一、CHECKALLOC 磁盘空间一致性二、CHECKCATALOG 系统表一致性三、CHECKCONSTRAINTS约束完整性四、CHECKDB 结构完整性五、CHECKTABLE 页的完整性六、DBREINDEX 索引七、INDEXDEFRAG 整理索引碎片八、SHRINKDATABASE

9、释放空间九、SHRINKFILE 释放文件空间十、HELP 语句的语法信息一、DBCC CHECKALLOC检查指定数据库的磁盘空间分配结构一致性。语法DBCC CHECKALLOC(database_name , NOINDEX|REPAIR_ALLOW_DATA_LOSS|REPAIR_FAST|REPAIR_REBUILD )WITHALL_ERRORMSGS|NO_INFOMSGS|,TABLOCK , ESTIMATEONLY显示需要的临时空间tempdb 例:use ufdata_999_2001goALTER DATABASE ufdata_999_2001 SET SINGLE

10、_USER-SQL7.0下同(sp_dboption ufdata_999_2001,single_user, true)goDBCC CHECKALLOC(ufdata_999_2001 , REPAIR_REBUILD) with NO_INFOMSGSgoALTER DATABASE ufdata_999_2001 SET MULTI_USER-SQL7.0(sp_dboption ufdata_999_2001,single_user, false)二、DBCC CHECKCATALOG检查指定数据库中的系统表内及系统表间的一致性。语法DBCC CHECKCATALOG (databa

11、se_name ) WITH NO_INFOMSGS 例:DBCC CHECKCATALOG (ufdata_999_2001 ) with NO_INFOMSGS三、DBCC CHECKCONSTRAINTS检查指定表上的指定约束或所有约束的完整性。语法DBCC CHECKCONSTRAINTS( table_name | constraint_name ) WITH ALL_ERRORMSGS| ALL_CONSTRAINTS 例:DBCC CHECKCONSTRAINTS with ALL_CONSTRAINTS四、 DBCC CHECKDB检查指定数据库中的所有对象的分配和结构完整性。

12、语法DBCC CHECKDB( database_name , NOINDEX | REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST |REPAIR_REBUILD ) WITH ALL_ERRORMSGS , NO_INFOMSGS , TABLOCK , ESTIMATEONLY , PHYSICAL_ONLY 例:use ufdata_999_2001goALTER DATABASE ufdata_999_2001 SET SINGLE_USERDBCC CHECKDB (ufdata_999_2001, REPAIR_REBUILD) with NO_INFOM

13、SGSgoALTER DATABASE ufdata_999_2001 SET MULTI_USERgo五、DBCC CHECKTABLE检查指定表或视图的数据、索引及 text、ntext 和 image 页的完整性。语法DBCC CHECKTABLE( table_name | view_name , NOINDEX | index_id|REPAIR_ALLOW_DATA_LOSS|REPAIR_FAST | REPAIR_REBUILD ) WITH ALL_ERRORMSGS| NO_INFOMSGS , TABLOCK , ESTIMATEONLY , PHYSICAL_ONLY 例:use ufdata_999_2001goALTER DATABASE ufdata_999_2001 SET SINGLE_USERgoDBCC CHECKTABLE (code, REPAIR_REBUILD) with NO_INFOMSGSgoALTER DATABASE ufdata_999_2001 SET MULTI_USER六、DBCC DBREINDEX重建指定数据库中表的一个或多个索引。语法DBCC DBREINDE

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 国内外标准规范

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号