1、把mdf文件和ldf文件拷贝到数据库的默认路径C:\Program
Files\Microsoft
SQL
Server\MSSQL10MSSQLSERVER\MSSQL\DATA里;
2、在sqlserver里新建个查询,执行下面代码;
USE
master;
GO
CREATE
DATABASE
NewFile
ON
(FILENAME
=
'C:\Program
Files\Microsoft
SQL
Server\MSSQL10MSSQLSERVER\MSSQL\DATA\Filemdf'),
(FILENAME
=
'C:\Program
Files\Microsoft
SQL
Server\MSSQL10MSSQLSERVER\MSSQL\DATA\File_logldf')
FOR
ATTACH;
GO
3、刷新数据库,就出现了新的数据库NewFile;
根据mdf文件和ldf文件还原成功!
mdf文件是Microsoft SQL Server使用的主数据库文件格式,企业级数据库程序; 用于与SQL
Server和相关附加组件一起安装的数据库文件; 用户也可以创建自定义MDF文件。
所以打开mdf文件可以使用Microsoft SQL Server软件进行打开,以下是具体演示步骤:
1、打开Microsoft SQL Server软件后鼠标右击Microsoft SQL Server界面左边
的“Databases”后选择“attach”。注意:Microsoft SQL Server要以管理员身份打开。
2、进入“attach databases”界面后点击“add”按钮进行选择想要打开的mdf文件。
3、在选择界面中找到想要打开的mdf文件并双击确认。这里以“MyDatabasemdf”文件作
为例子。
4、选中的mdf文件后会增加一个扩展文件,这是正常现象。接下来再敲击一次回车键即可成
功打开文件了。
由于种种原因,我们如果当时仅仅备份了mdf文件,那么恢复起来就是一件很麻烦的事情了。
如果您的mdf文件是当前数据库产生的,那么很侥幸,也许你使用sp_attach_db或者sp_attach_single_file_db可以恢复数据库,但是会出现类似下面的提示信息
设备激活错误。物理文件名 'C:\Program Files\Microsoft SQL Server\MSSQL\data\test_LogLDF' 可能有误。
已创建名为 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_logLDF' 的新日志文件。
但是,如果您的数据库文件是从其他计算机上复制过来的,那么很不幸,也许上述办法就行不通了。你也许会得到类似下面的错误信息
服务器: 消息 1813,级别 16,状态 2,行 1
未能打开新数据库 'test'。CREATE DATABASE 将终止。
设备激活错误。物理文件名 'd:\test_logLDF' 可能有误。
怎么办呢?别着急,下面我们举例说明恢复办法。
/
--A.我们使用默认方式建立一个供恢复使用的数据库(如test)。可以在SQL Server Enterprise Manager里面建立。
--B.停掉数据库服务器。
--C.将刚才生成的数据库的日志文件test_logldf删除,用要恢复的数据库mdf文件覆盖刚才生成的数据库数据文件test_datamdf。
--D.启动数据库服务器。此时会看到数据库test的状态为“置疑”。这时候不能对此数据库进行任何 *** 作。
--E.设置数据库允许直接 *** 作系统表。此 *** 作可以在SQL Server Enterprise Manager里面选择数据库服务器,按右--键,选择“属性”,在“服务器设置”页面中将“允许对系统目录直接修改”一项选中。也可以使用如下语句来实现。
use master
go
sp_configure 'allow updates',1
go
reconfigure with override
go
--F.设置test为紧急修复模式
--在查询管理器里设置如下命令:
update sysdatabases set status=-32768 where dbid=DB_ID('test')
--此时可以在SQL Server Enterprise Manager里面看到该数据库处于“只读\置疑\脱机\紧急模式”可以看到数据库里面的表,但是仅仅有系统表
--G.下面执行真正的恢复 *** 作,重建数据库日志文件
dbcc rebuild_log('test','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_logldf')
/
执行过程中,如果遇到下列提示信息:
服务器: 消息 5030,级别 16,状态 1,行 1
未能排它地锁定数据库以执行该 *** 作。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
说明您的其他程序正在使用该数据库,如果刚才您在F步骤中使用SQL Server Enterprise Manager打开了test库的系统表,那么退出SQL Server Enterprise Manager就可以了。
正确执行完成的提示应该类似于:
警告: 数据库 'test' 的日志已重建。已失去事务的一致性。应运行 DBCC CHECKDB 以验证物理一致性。将必须重置数据库选项,并且可能需要删除多余的日志文件。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
此时打开在SQL Server Enterprise Manager里面会看到数据库的状态为“只供DBO使用”。此时可以访问数据库里面的用户表了。
/
--H.验证数据库一致性(可省略)
dbcc checkdb('test')
/一般执行结果如下:
CHECKDB 发现了 0 个分配错误和 0 个一致性错误(在数据库 'test' 中)。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。/
--I.设置数据库为正常状态
sp_dboption 'test','dbo use only','false'
--如果没有出错,那么恭喜,现在就可以正常的使用恢复后的数据库啦。
--J.最后一步,我们要将步骤E中设置的“允许对系统目录直接修改”一项恢复。因为平时直接 *** 作系统表是一件比较危险的事情。当然,我们可以在SQL Server Enterprise Manager里面恢复,也可以使用如下语句完成
sp_configure 'allow updates',0
go
reconfigure with override
go
如果备份的数据库有 个文件 分别是 LDF 和 MDF 打开企业管理器 在实例上右击 所有任务 附加数据库 然后选择那个 MDF文件 就可以了
或者在查询分析器中输入
sp_attach_db 数据库名称 路径\文件名 ldf 路径\文件名 MDF
SQL Server数据库备份有两种方式 一种是使用BACKUP DATABASE将数据库文件备份出去 另外一种就是直接拷贝数据库文件mdf和日志文件ldf的方式 下面将主要讨论一下后者的备份与恢复 本文假定您能熟练使用SQL Server Enterprise Manager(SQL Server企业管理器)和SQL Server Quwey Analyser(SQL Server查询分析器)
正常的备份 恢复方式
正常方式下 我们要备份一个数据库 首先要先将该数据库从运行的数据服务器中断开 或者停掉整个数据库服务器 然后复制文件
卸下数据库的命令 Sp_detach_db 数据库名
连接数据库的命令 Sp_attach_db或者sp_attach_single_file_db
s_attach_db [@dbname =] dbname [@filename =] filename_n [ ]
sp_attach_single_file_db [@dbname =] dbname [@physname =] physical_name
使用此方法可以正确恢复SQL Sever 和SQL Server 的数据库文件 要点是备份的时候一定要将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 C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log ldf
sp_attach_single_file_db test C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_data mdf
// 本文转自 C++Builder 研究 // ccrun /article aspi= &d=oxit
只有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 的新日志文件
但是 如果您的数据库文件是从其他计算机上复制过来的 那么很不幸 也许上述办法就行不通了 你也许会得到类似下面的错误信息
服务器: 消息 级别 状态 行
未能打开新数据库 test CREATE DATABASE 将终止
设备激活错误 物理文件名 d:\test_log LDF 可能有误
lishixinzhi/Article/program/SQL/201311/16353
1 首先确认已经备份了mdf和ldf文件。
2 在SQL Server中新建一个同名的数据库,然后停止SQL Server服务。
3 用原有的mdf和ldf文件覆盖新建数据库对应的mdf和ldf文件。
4 重新启动SQL Server服务,这是应该会看到这个数据库处于置疑(Suspect)状态。(人品好的话,这个时候数据库就已经恢复正常了,上次xrf的数据库就是这样被我恢复的。人品不好的话,下面的步骤也不行,我有一次就是找了一个北京做数据恢复的公司才恢复完毕。)
5 在SQL查询分析器中执行以下命令,以允许更新系统表:use mastergosp_configure ‘allow updates’,1
reconfigure with overridego
6 将这个数据库置为紧急模式:
update sysdatabases set status = 32768 where name = 'db_name'go
7 使用DBCC CHECKDB命令检查数据库中的错误:
DBCC CHECKDB(‘db_name’)GO
8 如果DBCC CHECKDB命令失败,请转至第10步,否则先将数据库置为单用户模式,再尝试对其进行修复:
sp_dboption 'db_name',’single user’,’true’
DBCC CHECKDB(‘db_name’, REPAIR_ALLOW_DATA_LOSS)GO如果在执行DBCC CHECKDB(‘db_name’, REPAIR_ALLOW_DATA_LOSS)命令时提示说数据库未处于单用户模式状态的话,则重新启动SQL Server服务,然后继续尝试。
9 如果DBCC CHECKDB(‘db_name’, REPAIR_ALLOW_DATA_LOSS)命令失败,请转至第10步,否则若成功修复了数据库中的错误:
重新执行DBCC CHECKDB(‘db_name’)命令,确认数据库中已没有错误存在。
清除数据库的置疑状态:sp_resetstatus 'db_name'
清除数据库的单用户模式状态:sp_dboption 'db_name',’single user’,’false’
重新启动SQL Server服务,如果一切正常的话,则数据库已经成功恢复。
10 如果以上步骤都不能解决问题的话,请参考附件中的文档尝试通过重建事务日志来恢复数据库中的数据。
如果您只有MDF文件,问题就更加复杂一些,我们需要直接重建事务日志了:
1 在SQL Server中新建一个同名的数据库,然后停止SQL Server服务。
2 用原有的ldf文件覆盖新建数据库对应的mdf文件,将其日志文件(ldf)删除。
3 启动SQL Server服务,并将数据库置为紧急模式(同上: 步骤5和步骤6)。
4 停止并重新启动SQL Server服务。
5 执行以下命令重建数据库日志文件:(下面是个示例,您要用您实际的数据库名)
DBCC REBUILD_LOG(’cas_db’, 'D:\cas_db\cas_db_LogLDF')
6 重新将该数据库置为单用户模式。
以上就是关于SQL数据库覆盖能恢复么.mdf文件全部的内容,包括:SQL数据库覆盖能恢复么.mdf文件、mdf文件如何打开、.mdf文件覆盖了能恢复么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)