2017-07-25 3 views
-1

シナリオのマシンのSQL Serverデータベースのバックアップを復元します。私は1台のマシン

  • 上のデータベースのバックアップ(abc.bak)を持っている

    • 私はいくつかのパスに別のマシンにそれをコピーしたのは、G:\SQLDB\backup\master_copy.bak
    • をしましょう私は、次のT-SQLを試して復元するために使用しましたが、エラーが発生します。

    T-SQLを使用:

    RESTORE DATABASE New_DB 
    FROM DISK = 'G:\SQLDB\backup\master_copy.bak' 
    WITH 
        MOVE 'coop_test_dat' TO 'G:\SQLDB\livedb\new_db_data.mdf', 
        MOVE 'coop_test_log' TO 'G:\SQLDB\livedb\new_db_log.ldf', 
        REPLACE 
    

    エラーが発生:

    5133メッセージ、レベル16、状態1、行1
    ファイル「C用 Directory参照:\ SQLDB \ masterdb \ master_blank.mdf "がオペレーティングシステムエラー3で失​​敗しました(指定されたパスが見つかりません)。

    メッセージ3156、レベル16、状態3、行1
    ファイル 'coop_demo'は 'C:\ SQLDB \ masterdb \ master_blank.mdf'にリストアできません。 WITH MOVEを使用して、ファイルの有効な場所を識別します。

    ここで指定されたパスは、新しいマシンに存在しない古いマシンからのものです。

    どうすればこの問題を解決できますか?イェルーンが示唆したものを

  • +1

    エラーメッセージは、ファイル 'coop_demo'に関するものです。ファイル 'coop_test_dat'と' coop_test_log'だけを移動しています。 (一般的には、あなたのエラーメッセージはあなたのシナリオにまったく合致していないようですが、あなたの最後には不適切な置き換えが原因である可能性があります。 ](https://docs.microsoft.com/en-us/sql/t-sql/statements/restore-statements-filelistonly-transact-sql)を実行して、バックアップに含まれるファイルと適切な 'MOVE 'clauses。 –

    +0

    coop_demoは私の古いマシンの古いdbの名前です。新しいdb名に復元する必要があります:新しいマシンの新しい場所にあるnew_db – KoolKabin

    +0

    'coop_demo'も*データベースのファイル名です。どうして?エラーメッセージにはそうだと言われています。 –

    答えて

    2

    、あなたはすべてのファイルは、コマンドの下に使用を参照するためにいくつかのfiles..soを逃す可能性があります。..

    restore filelistonly from disk ='your .bak path' with file=1 
    

    上記のコマンドの出力は、あなたにバックアップされたすべてのファイルが表示されます、復元ファイルリストは、論理ファイル名

    logicalname 
    db_Data 
    db_Data1 
    db_log 
    

    今あなたが

    を使用することができます下にあったならば、あなたはとても置き換える

    と復元使用することができます

    RESTORE DATABASE New_DB 
    FROM DISK = 'G:\SQLDB\backup\master_copy.bak' WITH 
    MOVE 'db_Data' TO 'G:\SQLDB\livedb\new_db_data.mdf', 
    MOVE 'db_Data1' TO 'G:\SQLDB\livedb\new_db_data.ndf', 
    MOVE 'db_lof TO 'G:\SQLDB\livedb\new_db_log.log', 
    REPLACE