1

SQL Server 2005 の実行 データベース A があります。A のバックアップからデータベース B に復元しようとしています。データベース A を保持し、以前のデータ セットから新しいテスト用データベース B を作成したいと考えています。

B を作成し、.bak から復元し、管理スタジオからデータベースを 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

[ http://blog.sqlauthority.com/2007/04/30/sql-server-fix-error-msg-3159-level-16-state-1-line-1-msg-3013-level-16-state -1-line-1/][1]

そして私のために私はそれを作るだろう...

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

誰かがエラーで私を助けたり、この修正を確認したりできれば、私が遊んでいる私のデータベースではないので、とても感謝しています.

ありがとう。

4

4 に答える 4

3

私があなたならウィザードを使用します。Sql Server Management Studio で、[データベース] を右クリックし、[データベースの復元...] を選択します。このダイアログ/ウィザードは、あなたが求めていることを正確に実行します.復元元のソース.bakファイル/データベースを選択し、復元先のデータベースの名前を入力して、[OK]をクリックするだけです.

いくつかの注意事項 - まだ存在しないデータベースの名前を入力すると (これがやりたいことのように聞こえます)、そのデータベースが作成されます。既存のデータベースの名前を入力すると、そのデータベースへの復元が試行されます。別のデータベースで作成されたバックアップから既存のデータベースに復元しようとすると失敗しますが、[オプション] に移動して [既存のデータベースを上書きする] チェックボックスをオンにすることで、Sql Server に既存のデータベースを上書きさせることができます。

また、既存のデータベースのバックアップを復元して、そのデータベースの新しい 2 番目のコピーを作成する場合、ソースで現在使用されているものと同じデータベース ファイル パスを使用してデータベースを作成しようとするため、ウィザードが失敗することがあります。データベース。これを修正するには、[オプション] をクリックし、すべての [名前を付けて復元] ファイル パスをまだ存在しないファイルに変更する必要があります。

実際の復元を実際に実行する代わりに、このウィザードで SQL スクリプトを生成することもできます (上部にある [スクリプト] ボタンをクリックします)。

于 2009-05-28T10:17:29.510 に答える
1

SQL Server 7、SQL Server 2000 から SQL Server 2005 にデータベースを復元することができます。これは、restore と replace コマンドを使用して実現できます。

use master 

restore database mydatabase from disk ='c:\mybackup.bak' with replace 

外部ツールを使用せずに、このスクリプトを使用して SQL サーバーで簡単にバックアップを作成できます。

例による復元 を確認してください。

于 2009-07-23T14:42:43.527 に答える
0

最初にデータベース b を削除します。その後、復元を行います。

于 2009-05-28T10:27:32.300 に答える