【转】SQL2000恢复单MDF数据库过程

上一篇 / 下一篇  2012-09-28 14:13:25 / 个人分类:sql

[6V4hFG'N%?8l0 SQL2000恢复单MDF数据库过程51Testing软件测试网9NP.G k4E6z1BJEZ
如果备份的数据库有2个文件,分别是.LDF 和 .MDF,打开企业管理器,在实例上右击---所有任务--附加数据库,然后选择那个.MDF文件,就可以了。51Testing软件测试网3l_&Iay4a}}T%r
或者在查询分析器中输入:

'zDGMr+M0

D1oKu }1r/p u0sp_attach_db "数据库名称","路径/文件名.ldf","路径/文件名.MDF"51Testing软件测试网{vU8I:aO

+D(Dk:`iT*s]f0SQL Server数据库备份有两种方式,一种是使用BACKUP DATABASE将数据库文件备份出去,另外一种就是直接拷贝数据库文件mdf和日志文件ldf的方式。下面将主要讨论一下后者的备份与恢复。本文假定您 能熟练使用SQL Server Enterprise Manager(SQL Server企业管理器)和SQL Server Quwey Analyser(SQL Server查询分析器)51Testing软件测试网 DF0Z\!] e6u Sg

51Testing软件测试网`%m9Kv4ct

1、正常的备份、恢复方式51Testing软件测试网(Y0l Y*C FJ0t
正常方式下,我们要备份一个数据库,首先要先将该数据库从运行的数据服务器中断开,或者停掉整个数据库服务器,然后复制文件。
&DTl3D+@uX7? Eu0卸下数据库的命令:Sp_detach_db 数据库名
G8J;?d5~HEECc0连接数据库的命令:Sp_attach_db或者sp_attach_single_file_db51Testing软件测试网Kw b5^?BF5t0g
s_attach_db [@dbname =] 'dbname', [@filename1 =] 'filename_n' [,...16]51Testing软件测试网9Vu0to.}
sp_attach_single_file_db [@dbname =] 'dbname', [@physname =] 'physical_name'51Testing软件测试网 {_b$UX` sr8o%_!na
使用此方法可以正确恢复SQL Sever7.0和SQL Server 2000的数据库文件,要点是备份的时候一定要将mdf和ldf两个文件都备份下来,mdf文件是数据库数据文件,ldf是数据库日志文件。51Testing软件测试网$Xmo+c'C%}%p\D@
例子:
aD*X?jhNo0假设数据库为test,其数据文件为test_data.mdf,日志文件为test_log.ldf。下面我们讨论一下如何备份、恢复该数据库。51Testing软件测试网L-N7X C-L};j_3r
卸下数据库:sp_detach_db 'test'
,t dl;_#O}*y4p0连 接数据库:sp_attach_db 'test','C:/Program Files/Microsoft SQL Server/MSSQL/Data/test_data.mdf','C:/Program Files/Microsoft SQL Server/MSSQL/Data/test_log.ldf'51Testing软件测试网4x SO)l ~7x
sp_attach_single_file_db 'test','C:/Program Files/Microsoft SQL Server/MSSQL/Data/test_data.mdf'51Testing软件测试网-d%D:r5[g3G9h6tG

51Testing软件测试网1N1ujq!@9B#T\SQ!Z

2、只有mdf文件的恢复技术
p@dx l'H]M0由于种种原因,我们如果当时仅仅备份了mdf文件,那么恢复起来就是一件很麻烦的事情了。51Testing软件测试网6b7a_t.JbYU
如果您的mdf文件是当前数据库产生的,那么很侥幸,也许你使用sp_attach_db或者sp_attach_single_file_db可以恢复数据库,但是会出现类似下面的提示信息
y/R-oP,k'p0设备激活错误。物理文件名 'C:/Program Files/Microsoft SQL Server/MSSQL/data/test_Log.LDF' 可能有误。51Testing软件测试网3}:K+` {Bz1V
已创建名为 'C:/Program Files/Microsoft SQL Server/MSSQL/Data/test_log.LDF' 的新日志文件。
E2mX;|0c.~0但是,如果您的数据库文件是从其他计算机上复制过来的,那么很不幸,也许上述办法就行不通了。你也许会得到类似下面的错误信息
f[NT-z"A2Y9WEqn0服务器: 消息 1813,级别 16,状态 2,行 151Testing软件测试网`W Rr0zK%J*w*R
未能打开新数据库 'test'。CREATE DATABASE 将终止。51Testing软件测试网*i x5v5Kh^
设备激活错误。物理文件名 'd:/test_log.LDF' 可能有误。
s4?D`E&H0]0怎么办呢?别着急,下面我们举例说明恢复办法。51Testing软件测试网)H)GwtEx qbd
A.我们使用默认方式建立一个供恢复使用的数据库(如test)。可以在SQL Server Enterprise Manager里面建立。51Testing软件测试网k#V"_)JWCV-V0}
B.停掉数据库服务器。51Testing软件测试网*cRMzsFm;Quw
C.将刚才生成的数据库的日志文件test_log.ldf删除,用要恢复的数据库mdf文件覆盖刚才生成的数据库数据文件test_data.mdf。
:O6G0L9c6g/w0D.启动数据库服务器。此时会看到数据库test的状态为“置疑”。这时候不能对此数据库进行任何操作。51Testing软件测试网(fx.qM-H0d
E.设置数据库允许直接操作系统表。此操作可以在SQL Server Enterprise Manager里面选择数据库服务器,按右键,选择“属性”,在“服务器设置”页面中将“允许对系统目录直接修改”一项选中。也可以使用如下语句来实现。51Testing软件测试网/e/UuIS;^:U V&e8p
/*51Testing软件测试网| [^)oG3M

51Testing软件测试网0A"?-E_$]x

*/
.D$B$_ E2?_;a'_0use master
xn/kf8O?X0go
{ Id"leU0sp_configure 'allow updates',151Testing软件测试网*?-p6j%^ Sm2vw
go
.~&?R9H(n0a N:{#@4|0reconfigure with override
@ Pp$PD xh os7{0go51Testing软件测试网 R5Ua$j!m+lO1D:f)Z
F.设置test为紧急修复模式
)f,Z@-Q u7Z0update sysdatabases set status=-32768 where dbid=DB_ID('test')
1R XNE%df3L&j0此时可以在SQL Server Enterprise Manager里面看到该数据库处于“只读/置疑/脱机/紧急模式”可以看到数据库里面的表,但是仅仅有系统表
6FaNX v u8k5Q v.Yt0G.下面执行真正的恢复操作,重建数据库日志文件
tw}yo6ep0dbcc rebuild_log('test','C:/Program Files/Microsoft SQL Server/MSSQL/Data/test_log.ldf')51Testing软件测试网U \;\({'B%PjU/`
执行过程中,如果遇到下列提示信息:51Testing软件测试网3gm)A(q [j
服务器: 消息 5030,级别 16,状态 1,行 1
7R*G+P\'`%^[Y@0未能排它地锁定数据库以执行该操作。51Testing软件测试网|(d tP,tJ^W
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。51Testing软件测试网c0] |5@}#J
说明您的其他程序正在使用该数据库,如果刚才您在F步骤中使用SQL Server Enterprise Manager打开了test库的系统表,那么退出SQL Server Enterprise Manager就可以了。51Testing软件测试网4c1M5jPtA
正确执行完成的提示应该类似于:51Testing软件测试网$MV&t8IQX+PD:q@
警告: 数据库 'test' 的日志已重建。已失去事务的一致性。应运行 DBCC CHECKDB 以验证物理一致性。将必须重置数据库选项,并且可能需要删除多余的日志文件。51Testing软件测试网S9uY]5}"Xs
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。51Testing软件测试网K?%~vg7Nsp X
此时打开在SQL Server Enterprise Manager里面会看到数据库的状态为“只供DBO使用”。此时可以访问数据库里面的用户表了。51Testing软件测试网^Q\9pv:L?2rJ6@
H.验证数据库一致性(可省略)
:UIv!}bMO0dbcc checkdb('test')51Testing软件测试网5Y[,V.~n$]$g9j%G
一般执行结果如下:51Testing软件测试网.yAHC HCU U
CHECKDB 发现了 0 个分配错误和 0 个一致性错误(在数据库 'test' 中)。
g&n3Po#P!g_b"L z0DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。51Testing软件测试网7]z%}(]8Zn
I.设置数据库为正常状态
*Fl4Fu+Kk"_0sp_dboption 'test','dbo use only','false'
5\'D8X^D@&X_i0如果没有出错,那么恭喜,现在就可以正常的使用恢复后的数据库啦。51Testing软件测试网.`H nh*D"dp@
J.最后一步,我们要将步骤E中设置的“允许对系统目录直接修改”一项恢复。因为平时直接操作系统表是一件比较危险的事情。当然,我们可以在SQL Server Enterprise Manager里面恢复,也可以使用如下语句完成
o8L(oA;b0sp_configure 'allow updates',051Testing软件测试网j-RK){)Q3e
go
0H9Mf'F%WP u1`0reconfigure with override
{0S%uJ0qE[#L0go51Testing软件测试网;`6| [7@%d


TAG:

 

评分:0

我来说两句

日历

« 2024-05-01  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 15660
  • 日志数: 34
  • 书签数: 1
  • 建立时间: 2009-09-03
  • 更新时间: 2015-04-02

RSS订阅

Open Toolbar