データベースの SQL Server バックアップ ファイルを復元しようとしていますが、次のようなエラーがスローされます。
バックアップ セットは、既存のデータベース以外のデータベースのバックアップを保持します。
私のデータベースは SQL Server 2008 にあり、バックアップ ファイルは 2005 年にあります。
何が問題になる可能性がありますか?
データベースの SQL Server バックアップ ファイルを復元しようとしていますが、次のようなエラーがスローされます。
バックアップ セットは、既存のデータベース以外のデータベースのバックアップを保持します。
私のデータベースは SQL Server 2008 にあり、バックアップ ファイルは 2005 年にあります。
何が問題になる可能性がありますか?
私もこの問題に遭遇しました。
解決 :
.bak
でください。また:
1) コマンドの使用WITH REPLACE
中に使用しRESTORE
ます (GUI を使用している場合は、[オプション] -> [既存のデータベースを上書きする] ( WITH REPLACE
) にあります)。
2)Delete
競合している古いデータベースをRESTORE
コマンドを使用して再度復元します。
詳細については、リンクを確認してください。
まず、同じ名前の空のデータベースを作成します。次に、復元オプションに進みます
左ペインの[オプション]で、選択することを忘れないでください
それでおしまい
スクリプト アプローチを使用していて、LDF および MDF ファイルに関するエラーが発生した場合は、最初に次のコマンドを使用して、バックアップ セット内のファイルの論理名(およびその他の詳細) についてバックアップ ファイルをクエリできます。
-- Queries the backup file for the file list in backup set, where Type denotes
-- type of file. Can be L,D,F or S
-- info: https://docs.microsoft.com/en-us/sql/t-sql/statements/restore-statements-filelistonly-transact-sql
RESTORE FILELISTONLY FROM DISK = 'C:\Temp\DB_backup.bak'
GO
次のような結果が得られます。
そして、これらの論理名をクエリで使用できます。
-- Script assumes you want MDF and LDF files restored on separate drives. Modify for your scenario
RESTORE DATABASE DB
FROM DISK='C:\Temp\DB_backup.bak'
WITH REPLACE,
MOVE 'DB' TO 'E:\MSSQL\Data\DB.mdf', -- "DB" is the mdf logical name from query above
MOVE 'DB_log' TO 'F:\MSSQL\Logs\DB.ldf'; -- "DB_log" is LDF logical name from query above
詳細についてRESTORE FILELISTONLY
は、SQL Server のドキュメントを参照してください。
元の.mdf
と.ldf
ファイルDb
がおそらくc:\programFile\....
にあり、この情報がバックアップに保存されているためです。
インストール先の別の SQL Server に同じ DB を作成すると、c:\program Files (x86)\ ....
通常どおり復元できません。ファイルのパスを再配置する必要が.mdf
あります。.ldf
したがって:
新しいサーバーに空の DB を作成します
空のデータベースを右クリック > [タスク] > [復元] > [データベース] > [デバイス] をクリックして.bak
ファイル を選択 > 復元先のデータベースを選択
終わり!
それが役に立てば幸い!
今日も同様の問題に遭遇しました。上記の解決策をすべて試しましたが、うまくいきませんでした。だから私の解決策をここに投稿してください。
復元前にテールロングバックアップのチェックを外すことを忘れないでください
他の人にも役立つことを願っています!
また、データベース名が、復元しようとしているバックアップのデータベース名と一致していることを確認することも重要です。一致しない場合は、同じエラーが発生します。
一部の人はこれを非常に複雑にしています。これは非常に簡単であることがわかりました。
1) .bak ファイルのデータベース名と同じ名前のデータベースを作成します!重要
2) データベースを右クリック | タスク > 復元 > データベース
3) [復元のソース] で [デバイスから] を選択します。
4) .bak ファイルを選択
5) 以下のグリッドビューでデータベースのチェックボックスを選択します
6) 右側の [ページの選択] で [オプション] を選択します。
7) 「レプリケーション設定を保持する (WITH KEEP_REPLICATION)」というラベルの付いたチェックボックスを選択します。
次に、一般ページに戻り、[OK] をクリックしてデータベースを復元します...以上です。
テストのためにローカルに新しいデータベースを作成する必要があり、製品からバックアップがありました。最初にデータベースを作成し、新しいデータベースの上でBAKを実行しようとしたため、このエラーが発生しました。復元画面自体で新しいデータベース名を取得しながら、データベースを削除して復元しました。データベースは復元時に自動的に作成されました。
オプションで、「名前を付けて復元」ファイル名を新しいデータベースの mdf および ldf に変更します。ソース データベースの .mdf および .ldf ファイルを参照しています。
Generate scripts を使用して、別の方法で作業を完了しました。同じエラーのために Backup-Restore が問題の解決に役立たなかったので、それは私にとってはうまくいきました。
新しい DB に復元し、ファイル名の構文を確認してください。ログ ファイルに記録されます。新しい SQL バージョンでは、"_log" サフィックスが付けられます。
オプションタブで既存のデータベースフラグを上書きすることを確認します
ファビオ
この問題は、ファイルとフォルダーのアクセス許可に関連していると確信しています。
本番データベースを同じサーバー上のステージング データベースに復元しようとしていました。
私の場合に機能した唯一のことは、新しい空のデータベースへの復元でした。これはうまく機能し、実稼働ファイルを上書きしようとはしませんでした (実稼働バックアップ ファイルを既存のステージング データベースに復元するだけの場合)。次に、古いデータベースを削除して名前を変更します。ファイルは新しい一時名を保持しますが、私の場合は問題ありません。
(または、最初にステージング データベースを削除してから、ステージング データベースと同じ名前の新しいデータベースに復元できます)