从SQL Server 2008的.mdf和.ldf文件还原数据库

时间:2013-08-19 08:43:25

标签: sql-server-2008 database-restore

出于某种原因,我必须卸载SQL Server 2008 R2但在此之前我从

复制了我的数据库的两个文件(.mdf.ldf
  

C:\ Program Files(x86)\ Microsoft SQL Server \ MSSQL10_50.MSSQL2008 \ MSSQL \ DATA

现在,问题是,我是否可以在新安装的SQL Server 2008 R2中从这些文件中恢复数据库。

如果是:那我该怎么做?

7 个答案:

答案 0 :(得分:98)

是的,有可能。 步骤是:

  1. 首先将.mdf.ldf文件放入C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\文件夹

  2. 然后转到sql软件,右键单击“数据库”并单击“附加”选项以打开“附加数据库”对话框

  3. 点击“添加”按钮打开并从C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\文件夹中找到数据库文件

  4. 单击“确定”按钮。 SQL Server Management Studio从.MDF文件加载数据库。

答案 1 :(得分:10)

首次谷歌搜索让我得到了这个答案。所以我想用更新版本的attach,detach来更新它。

Create database dbname 
On 
(   
Filename= 'path where you copied files',   
Filename ='path where you copied log'
)
For attach; 

此外,如果您的数据库干净地关闭(数据库关闭时没有活动事务)并且您没有日志文件,则可以使用以下方法,SQL Server将创建新的事务日志文件..

Create database dbname 
    On 
    (   
    Filename= 'path where you copied files'   
    )
    For attach; 

如果您没有指定事务日志文件,SQL将尝试查看默认路径,并尝试使用它,无论数据库是否干净地关闭..

以下MSDN对此有何评论......

  

如果读写数据库具有单个日志文件,并且您没有为日志文件指定新位置,则附加操作将在旧位置查找该文件。如果找到,则使用旧的日志文件,无论数据库是否干净地关闭。但是,如果找不到旧的日志文件,并且数据库干净地关闭且没有活动的日志链,则附加操作会尝试为数据库构建新的日志文件。

这种方法有一些限制,有些方面也会受到影响..

  

1.attach-and-detach操作都禁用数据库的跨数据库所有权链接   2.Database trustworthy设置为off   3.Dachaching只读数据库会丢失有关差异备份的差异基础的信息。

最重要的是..您无法将最新版本的数据库附加到早期版本

<强>参考文献:
https://msdn.microsoft.com/en-in/library/ms190794.aspx

答案 2 :(得分:9)

从脚本(有效的脚本):

CREATE DATABASE Northwind
ON ( FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\Northwind.mdf' )
LOG ON ( FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\Northwind_log.ldf')
GO

显然更新路径:

  

C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA

您的.mdf和.ldf所在的位置。

答案 3 :(得分:7)

我有一个答案给你 是的,有可能。

转到

SQL Server Management Studio&gt;选择数据库&gt;点击附件

然后选择并添加.mdf和.ldf文件。单击“确定”。

答案 4 :(得分:1)

这就是我所做的

首先执行create database x。 x是旧数据库的名称,例如mdf的名称。

然后打开sql服务器配置并停止sql服务器。

浏览到新创建的数据库之后,该文件应该位于程序文件下,对于我来说是

C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQL\MSSQL\DATA

并使用旧文件/数据库补充新创建的mdf和Idf。

然后只需重新启动sql server和walla:)

答案 5 :(得分:0)

use test
go
alter proc restore_mdf_ldf_main (@database varchar(100), @mdf varchar(100),@ldf varchar(100),@filename varchar(200))
as
begin 
begin try
RESTORE DATABASE @database FROM DISK = @FileName
with norecovery,
MOVE @mdf TO 'D:\sql samples\sample.mdf',
MOVE @ldf TO 'D:\sql samples\sample.ldf'
end try
begin catch
SELECT ERROR_MESSAGE() AS ErrorMessage;
print 'Restoring of the database ' + @database + ' failed';
end catch
end

exec restore_mdf_ldf_main product,product,product_log,'c:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\product.bak'

答案 6 :(得分:0)

CREATE DATABASE MyDatabase 
ON (FILENAME = 'C:\SQLServer\MyDatabase_Data.mdf'), 
(FILENAME = 'C:\SQLServer\ MyDatabase _Log.ldf') 
FOR ATTACH; 
相关问题