SQL Server 2005 の復元が失敗する
-
06-09-2019 - |
質問
SQL Server 2005 を実行しているデータベース A があります。A のバックアップからデータベース B に復元しようとしています。データベース A を保持し、以前のデータ セットから新しいテスト データベース B を作成したいと考えています。
B を作成し、.bak から復元し、Management Studio からデータベースを B に復元しようとしました。
エラーは...
タイトル:Microsoft SQL Serverの管理
スタジオ
サーバー「195448-APP2」の復元が失敗しました。(Microsoft.SqlServer.Smo)
ヘルプが必要な場合は、次をクリックしてください。 http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=9.00.1399.00&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=Restore+Server&LinkId=20476
- - - - - - - - - - - - - - - 追加情報:
System.Data.SqlClient.SqlError:バックアップセットには、既存の「B」データベース以外のデータベースのバックアップが保持されます。(Microsoft.SqlServer.Smo)
ヘルプが必要な場合は、次をクリックしてください。 http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=9.00.1399.00&LinkId=20476
------------------------------ ボタン:
わかりました
このスニペットを見つけましたが、使用するのをためらっています。データベースの復元プロセス中に mdf と ldf の場所を変更するという問題が解決されるのか、それともデータベース A の項目を完全に置き換えるのかを尋ねたいと思います。
ALTER DATABASE AdventureWorks
SET SINGLE_USER WITH
ROLLBACK IMMEDIATE
RESTORE DATABASE AdventureWorks
FROM DISK = 'C\:BackupAdventureworks.bak'
WITH MOVE 'AdventureWorks_Data' TO 'C:\Data\datafile.mdf',
MOVE 'AdventureWorks_Log' TO 'C:\Data\logfile.ldf',
REPLACE
そして私ならそれを成し遂げるだろう...
RESTORE DATABASE B
FROM DISK = 'C:\backupofA.bak'
WITH
MOVE 'B' TO 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\B.mdf',
MOVE 'B_log' to 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\B_log.ldf',
REPLACE
私が知らないのは、それがデータベース A に影響を与えるかどうかです。置換が B に関連付けられたファイルを参照することを願っています。
あるいはそうあるべきかどうか
RESTORE DATABASE B
FROM DISK = 'C:\backupofA.bak'
WITH
MOVE 'A' TO 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\B.mdf',
MOVE 'A_log' to 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\B_log.ldf',
REPLACE
私が使っているデータベースではないので、誰かがエラーを手伝ってくれたり、この修正を確認してくれたら、とても感謝します。
ありがとう。
解決
単純に使用できます データベースコピーウィザード。プロのようにやりたい場合は、T-SQL を使用して RESTORE を実行します。動く ...REPLACE は期待通りの動作をします。2 つのファイルを目的の場所に移動し、データベース B をバックアップのコンテンツで置き換えます。A は影響を受けません。
他のヒント
私があなただったら、ウィザードを使用するでしょう:SQL Server Management Studio で、[データベース] を右クリックし、[データベースの復元...] を選択します。このダイアログ/ウィザードは、あなたが求めていることを正確に実行します。復元元のソース .bak ファイル/データベースを選択し、復元先のデータベースの名前を入力して、[OK] をクリックするだけです。
いくつかの注意事項 - まだ存在しないデータベースの名前を入力すると (これがやりたいことのように思えます)、そのデータベースが自動的に作成されます。既存のデータベースの名前を入力すると、そのデータベースへの復元が試行されます。別のデータベースで作成されたバックアップから既存のデータベースに復元しようとすると失敗しますが、[オプション] に移動して [既存のデータベースを上書きする] チェックボックスをオンにすることで、SQL Server に既存のデータベースを強制的に上書きさせることができます。
また、既存のデータベースのバックアップを復元して、そのデータベースの新しい 2 番目のコピーを作成する場合、ソースで現在使用されているものと同じデータベース ファイル パスを使用してデータベースを作成しようとするため、ウィザードが失敗することがあります。データベース。これを修正するには、[オプション] をクリックし、すべての [名前を付けて復元] ファイル パスをまだ存在しないファイルに変更する必要があります。
実際に復元を実行する代わりに、このウィザードで SQL スクリプトを生成することもできます (上部の「スクリプト」ボタンをクリック)。これは、代わりに生の SQL でこの種の処理を行う方法を学びたい場合に便利です。
SQL Server 7、SQL Server 2000、SQL Server 2005 のデータベースを復元できます。これは、restore と replace コマンドを使用して実現できます。
use master
restore database mydatabase from disk ='c:\mybackup.bak' with replace
外部ツールを使用せずに、このスクリプトを使用して SQL サーバーのバックアップを簡単に取得できます。
チェックアウト 例を使用して復元する.
まずデータベース b を削除します。その後、復元を実行します。