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

来源:互联网 发布:sql合并相同行 编辑:程序博客网 时间:2024/05/24 00:18


方法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 --启动服务

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

 


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 违章缴费单丢了,怎么办 违章处理单掉了怎么办 驾驶证被扣9分后怎么办 车子违章扣50分怎么办 车子扣了12分怎么办 大学把档案丢了怎么办 学校把档案丢了怎么办 高考考了200多分怎么办 高考报名号忘了怎么办 中考只考500分怎么办 档案自提了之后怎么办 冬天衣服上的毛怎么办 四维预约不上怎么办 交了订金后悔了怎么办 信而富认证失败怎么办 南京市民卡坏了怎么办 南京市民卡断了怎么办 义乌市民卡丢了怎么办 常熟市民卡丢了怎么办 昆山市民卡丢了怎么办 市民卡丢了看病怎么办 儿童市民卡丢了怎么办 眉毛纹的太黑怎么办 法院执行书下了怎么办 汽车临牌过期了怎么办 考试用了hb铅笔怎么办 处对象处的心累怎么办 孩子初中毕业考不上高中怎么办 单位停交社保后怎么办 58同城电话骚扰怎么办 回民误吃了猪肉怎么办 回族人吃了猪肉怎么办 商场倒闭了商铺怎么办 吃了金毓婷出血怎么办 吃过毓婷后怀孕怎么办 新鲜枣子吃多了怎么办 xp系统重启黑屏怎么办 15岁初中生厌学怎么办 被九州教育骗了怎么办 腰疼的不能弯腰怎么办 长期弯腰导致的腰疼怎么办