58

何らかの理由で SQL Server 2008 R2 をアンインストールする必要がありますが、その前に、データベースの2 つのファイル (.mdfおよび) を からコピーしました。.ldf

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

さて、問題は、新しくインストールした SQL Server 2008 R2 でこれらのファイルからデータベースを復元できるかどうかです。

はいの場合: どうすればこれを行うことができますか?

4

7 に答える 7

111

はい、可能です。手順は次のとおりです。

  1. 最初.mdf.ldfファイルを C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\フォルダーに入れます

  2. 次に sql software に移動し、[データベース] を右クリックして [アタッチ] オプションをクリックし、[データベースのアタッチ] ダイアログ ボックスを開きます。

  3. 「追加」ボタンをクリックして、 C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\フォルダーからデータベースファイルを開き、検索します

  4. 「OK」ボタンをクリックします。SQL Server Management Studio は、.MDFファイルからデータベースを読み込みます。

于 2014-02-19T10:24:58.653 に答える
13

スクリプトから(動作するもの):

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 が存在する場所。

于 2016-01-24T17:13:24.253 に答える
10

最初のグーグル検索でこの答えが得られました。そこで、これを新しいバージョンのアタッチ、デタッチで更新することを考えました。

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

さらに、データベースが正常にシャットダウンされ (データベースのシャットダウン中にアクティブなトランザクションが存在しない)、ログ ファイルがない場合は、以下の方法を使用できます。SQL サーバーは新しいトランザクション ログ ファイルを作成します。

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

トランザクション ログ ファイルを指定しない場合、SQL はデフォルト パスを調べようとし、データベースが正常にシャットダウンされたかどうかに関係なく、それを使用しようとします。

これについて、 MSDNは次のように述べています。

読み取り/書き込みデータベースに 1 つのログ ファイルがあり、ログ ファイルの新しい場所を指定しない場合、アタッチ操作はファイルの古い場所を検索します。見つかった場合は、データベースが正常にシャットダウンされたかどうかに関係なく、古いログ ファイルが使用されます。ただし、古いログ ファイルが見つからず、データベースが正常にシャットダウンされ、アクティブなログ チェーンがない場合、アタッチ操作はデータベースの新しいログ ファイルの作成を試みます。

このアプローチにはいくつかの制限があり、いくつかの副作用もあります..

1. アタッチ操作とデタッチ操作の両方で、データベースのクロスデータベース所有権チェーンが無効になります2. データベース
の信頼性がオフに設定されています 3.
読み取り専用データベースをデタッチすると、差分バックアップの差分ベースに関する情報が失われます。

最も重要なのは、最近のバージョンのデータベースを以前のバージョンに接続することはできません

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

于 2015-03-14T20:08:45.693 に答える
2

これは私がしたことです

最初に実行しcreate database xます。x は、mdf の名前など、古いデータベースの名前です。

次に、SQL サーバー構成を開き、SQL サーバーを停止します。

新しく作成されたデータベースの場所を参照した後、プログラムファイルの下にあるはずです。私の場合は

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

新しく作成された mdf と Idf を古いファイル/データベースに置き換えます。

次に、SQLサーバーとワラを再起動するだけです:)

于 2018-10-14T00:02:15.923 に答える
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'
于 2016-05-11T08:44:04.577 に答える