教你轻松恢复修复SQLServer的MDF文件

教你轻松恢复修复SQLServer的MDF文件,第1张

教你轻松恢复修复SQLServer的MDF文件,第2张

首先,如果备份的数据库有两个文件,即。LDF和。MDF,打开企业管理器,右键单击instance-all tasks-attach database,然后选择。MDF文件。
或输入:

Sp_attach_db "database name "," path \ file name.ldf "," path \ filename . mdf "

SQL Server数据库的备份有两种方式,一种是使用BACKUP DATABASE备份数据库文件,另一种是直接复制数据库文件MDF和日志文件ldf。下面将主要讨论后者的备份和恢复。本文假设您能够熟练使用SQL Server企业管理器(SQL Server企业管理器)和SQL Server qu wey Analyzer(SQL Server查询分析器)。
1。正常备份和恢复模式0
在正常模式下,要备份数据库,我们必须首先断开数据库与正在运行的数据服务器的连接,或者停止整个数据库服务器,然后复制文件。

卸载数据库的命令:Sp_detach_db数据库名称
连接数据库的命令:Sp_attach_db或Sp _ attach _ single _ file _ db
s _ attach _ db[@ dbname =]' dbname ',
[@ filename 1 =]' filename _ n '[,...16]
sp _ attach _ single _ file _ db[@ dbname =]
' dbname ',[@ phys name =]' physical _ name '

该方法可以正确还原SQL Sever7.0和SQL Server 2000的数据库文件。关键是备份时mdf和ldf文件都要备份。mdf文件是数据库数据文件,ldf是数据库日志文件。
例:
假设数据库为test,其数据文件为test_data.mdf,日志文件为test_log.ldf我们来讨论一下如何备份和恢复数据库。

卸载数据库:sp_detach_db 'test'
连接数据库:sp _ attach _ db' test ','
C:\ Program Files \ Microsoft SQL Server \ MSSQL
\ Data \ test _ Data . MDF ',' Program Files
\ Microsoft SQL Server \ MSSQL \ Data \ test _ log . ldf '
sp _ attach _ single _ file _ db ' test ','
C:\ Program Files \ Microsoft SQL Server \ MSSQL只有mdf文件恢复技术
由于种种原因,如果当时我们只备份了mdf文件,恢复起来会很麻烦。
如果你的mdf文件是当前数据库生成的,那是侥幸。也许您可以使用sp_attach_db或sp_attach_single_file_db来恢复数据库,但会出现如下消息:

设备激活错误。
物理文件名“c:\ program files \ Microsoft SQL Server
\ MSSQL \ data \ test _ log . ldf”可能错误。
已创建一个名为“C:\ Program Files \ Microsoft SQL Server
\ MSSQL \ data \ test _ log . ldf”的新日志文件。

但是,如果你的数据库文件是从其他电脑上复制过来的,那么很遗憾,也许上面的方法行不通。您可能会收到类似以下内容的错误消息:
Server:消息1813,级别16,状态2,第1行
无法打开新数据库“test”。创建将终止。
设备激活错误。物理文件名d:\test_log。“LDF”可能是错误的。

我该怎么办?别急,下面举个如何恢复的例子。
A .我们使用默认的方法构建数据库(如test)进行恢复。您可以在SQL Server企业管理器中创建它。
B .停止数据库服务器。
C .删除刚刚生成的数据库的日志文件test_log.ldf,用要恢复的数据库mdf文件覆盖数据库数据文件test_data.mdf。
D .启动数据库服务器。此时,您将看到数据库测试的状态为“怀疑”。此时您无法对此数据库进行任何操作。
E .将数据库设置为允许直接操作系统表。对于此操作,您可以在SQL Server企业管理器中选择数据库服务器,右键单击并选择“属性”,然后在“服务器设置”页面中选择“允许直接修改系统目录”。也可以使用下面的语句来实现。
F .将测试设置为紧急修复模式

update databases set status =-32768其中dbid = db _ id ('test')

此时,您可以看到数据库在SQL Server企业管理器中处于“只读\查询\脱机\紧急模式”。您可以看到数据库中的表,但是只有系统表
g

Dbrebuild _ log ('test ',' C:\ Program Files \ Microsoft
SQL Server \ MSSQL \ data \ test _ log . ldf ')
在执行过程中,如果遇到以下提示:
Server:
DBCC完成。如果DBCC输出错误消息,请联系您的系统管理员。
这意味着您的其他程序正在使用该数据库。如果您刚刚在步骤F中使用SQL Server企业管理器打开了测试库的系统表,您可以直接退出SQL Server企业管理器。
正确执行完成的提示应该类似于:
警告:数据库“test”的日志已重建。事务一致性已经丢失。运行DBCC CHECKDB以验证物理一致性。必须重置数据库选项,并且可能需要删除冗余的日志文件。
DBCC完蛋了。如果DBCC输出错误消息,请联系您的系统管理员。
当您在SQL Server企业管理器中打开它时,您会看到数据库的状态是“仅限DBO”。此时,您可以访问数据库中的用户表。
H .验证数据库一致性(可省略)
DBCC CHECKDB(' test ')
一般执行结果如下:
CHECKDB发现0个分配错误和0个一致性错误(在数据库' test '中)。
DBCC完蛋了。如果DBCC输出错误消息,请联系您的系统管理员。
i .将数据库设置为正常状态。

SP _ DBOPTION' TEST ','仅DBO使用',' FALSE'

如果没有错误,那么恭喜您,您现在可以正常使用还原的数据库了。
J .最后,我们将恢复步骤e中设置的“允许直接修改系统目录”项。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 教你轻松恢复修复SQLServer的MDF文件

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情