SQL SERVER 2008 数据库文件恢复方法



方法1:***成功案例***

--把备份的数据库数据文件(*.mdf)和日志文件(*.ldf)都拷贝到服务器的一个目录下,然后打开SL Server uery (查询分析器)进行操作。

--例如:D盘Hisense\SysDate\目录下存有: DBtest_data.mdf,和DBtest_log.ldf备份的文件。通过sl 语恢复

--为DBtest的数据库名.(注:恢复为DBtest的数据库名在sl server 企管管理器下必须是唯一的,即没有DBtest数所库名才可以恢复为DBtest的数据库名)。

--操作步骤:

--1.打开sl  server  下面的uery   Analyzer(即查询分析器)

--2.输入:

EXEC sp_attach_db @dbname = N'DBtest',

@filename1 = N'D:\data\DBtest_Data.MDF',

@filename2 = N'D:\data\DBtest _Log.LDF'

go

--按”F5”执行。

--3.以执行完成后,把第2步中的所有语句全部删除,然后输入如下语句:

USE DBtest

EXEC sp_updatestats

Go

--按”F5”执行。

--提示所有表已经恢复成功后,即可连接软件了.

--另附:只恢复数据文件(*.mdf)时,不恢复事务日志文件(*.ldf)的方法如下:

--首先在企业管理器下,建立一个数据库名(如:@DBtest)

--然后,同样打开sl server 查询分析器,然后输入:

EXEC sp_attach_db @dbname = N'DBtest',@filename1 = N'D:\data\DBtest_Data.MDF'

EXEC sp_attach_single_file_db @dbname = DBtest, @physname = 'd:\Data\DBtest_data.mdf'

go

--按F5执行完后,再执行以下语句:

USE DBtest

EXEC sp_updatestats

Go

--这个语句的作用是仅仅加载数据文件,日志文件可以由SL Server数据库自动添加,但是原来的日志文件中记录的数据就丢失了。

--注:DBtest是数据库名

--文件名和路径一定要根据实际数据为文件(*.mdf)和事务日志文件(*.ldf)所在的目录要对应,否则路径输入的不对,则无法恢复。



方法2:***成功案例***

--如果是由于操作系统或sl server不能启动,只有保留的数据为文件(如:DBtest_data.mdf)和事务日志文件(DBtest_log.ldf)时,需重新安装操作系统或重新安装sl server时,一定要与上一次安装的路径相同(如: d:\Program Files\Microsoft SL Server\MSSL\Data\DBtest.mdf')
--(等同于在别的服务器安装一个新的数据库,在新服务器上创建同名DBtest,停止sql server服务,将保留原DBtest文件拷贝过来进行替换)。

--操作系统或sl server安装成功后,把sl server服务启动后,在查询分析器下面,建立与上次相同的数据库名(如:DBtest),数据库DBtest成功建立后,然后把sl server服务停止。

--然后把保留的数据为文件(如:DBtest_data.mdf)和事务日志文件(DBtest_log.ldf)拷贝到,新建立的DBtest数据库所在的目录下进行覆盖,然后重启sql server服务:
--你会发现数据库被标记为(紧急或者可疑),用以下方法把数据库恢复;
--也可用以下SQL语句把数据库改变为紧急状态:
update master.dbo.sysdatabases set status='32768' ----置成Emergency Mode (应急状态)
where name='DBtest' ----将DBtest替换为你已经损坏的数据库名
--提示”不允许对系统目录进行即席更新(可忽略,直接执行下面的语句)
--1、修改数据库为紧急模式
 ALTER DATABASE DBtest SET EMERGENCY
 
--2、使数据库变为单用户模式
 
ALTER DATABASE DBtest SET SINGLE_USER
 
--3、修复数据库日志重新生成,此命令检查的分配,结构,逻辑完整性和所有数据库中的对象错误。当您指定“REPAIR_ALLOW_DATA_LOSS”作为DBCC CHECKDB命令参数,该程序将检查和修复报告的错误。但是,这些修复可能会导致一些数据丢失。
DBCC CheckDB (DBtest, REPAIR_ALLOW_DATA_LOSS)
 ----重建数据库日志重新生成,这些修复可能会导致一些数据丢失。(非必要条件,可忽略本语句
DBCC CheckDB (DBtest,REPAIR_REBUILD)

--命令执行完成后可能会出现以下警告:
--警告: 数据库 '库名' 的日志已重新生成。已失去事务的一致性。RESTORE 链已断开,服务器不再有以前的日志文件的上下文,因此您需要了解它们的内容。应运行 DBCC CHECKDB 验证物理一致性。数据库已置于 dbo-only 模式。在准备使数据库可用时,需要重置数据库选项,并删除所有多余的日志文件。
--此时可以不用理会此警告,关闭Microsoft SQL Server Management Studio。
 
--4、重新打开Microsoft SQL Server Management Studio,使数据库变回为多用户模式
 
 ALTER DATABASE DBtest SET MULTI_USER

 --再次,打开Sql Server 2008时被标记为“可疑”的数据库已恢复正常状态,此时数据库已恢复成功。
 
--5、开始->运行->输入cmd->打开DOS命令窗口,输入以下命令重启数据库服务
Net stop mssqlserver --停止服务
Net start mssqlserver --启动服务

--序:如果还不能成功恢复,请另寻高明方法。

 


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值