データベースのSQL Serverバックアップファイルを復元しようとしていますが、次のようにエラーがスローされます。
バックアップセットは、既存のデータベース以外のデータベースのバックアップを保持します。
SQL Server 2008のデータベースとバックアップファイルは2005年のものです。
何が問題なのでしょうか?
データベースのSQL Serverバックアップファイルを復元しようとしていますが、次のようにエラーがスローされます。
バックアップセットは、既存のデータベース以外のデータベースのバックアップを保持します。
SQL Server 2008のデータベースとバックアップファイルは2005年のものです。
何が問題なのでしょうか?
回答:
私もこの問題に出くわしました。
解決 :
.bak
ファイルを復元しないでください。どちらか:
1)コマンドの使用WITH REPLACE
中に使用しますRESTORE
(GUI を使用している場合は、[オプション]-> [既存のデータベースを上書きします](WITH REPLACE
)にあります)。
2)Delete
競合している古いデータベースRESTORE
。コマンドを使用して再度復元します。
詳細については、リンクを確認してください。
簡単な3つのステップ:
1-データベースを右クリック→タスク→復元→データベース
2- Device
ソースとして確認し、.bak(または圧縮された.bak)ファイルを見つけます
3-左ペインでをクリックしてoptions
、
他のオプションは本当にオプションです(そしてもちろん重要です)!
そのため、.mdf
そして.ldf
元のファイルはDb
多分で見つけたc:\programFile\....
と、この情報は、バックアップに保存されます!
インストール先の別のSQL Serverに同じDBを作成するとc:\program Files (x86)\ ....
、通常どおりに復元できません。.mdf
および.ldf
ファイルのパスを再配置する必要があります。
したがって:
新しいサーバーに空のDBを作成する
空のDBを右クリック>タスク>復元>データベース>デバイスをクリックして.bak
ファイルを選択> DBを選択して復元
できた!
それが役に立てば幸い!
今日も同様の問題に遭遇しました。上記のすべてのソリューションを試したが機能しなかった。ここに私の解決策を投稿します。
復元する前に、Tail-long Backupのチェックを外すことを忘れないでください
他の人にも役立つことを願っています!
スクリプトアプローチを使用していて、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のドキュメントをご覧ください。
他の作業を行う前に、バックアップが完全か差分かを確認してください。差分バックアップから新しいデータベースを作成しようとしている場合は、何をしてもエラーが発生します。
system.data.sqlclient.sqlerror:バックアップセットは、既存の「Dbname」データベース以外のデータベースのバックアップを保持します
私は魂を見つけるために出会いました
同じ名前または異なるデータベース名でデータベースを作成しないでください。重要。
データベースを右クリック| タスク>復元>データベース
[復元元]で[デバイスから]を選択します
.bakファイルを選択
以下のグリッドビューでデータベースのチェックボックスを選択してください
データベースへ:「ここに新しいデータベース名を入力できます」(Ex:DemoDB)
ドロップダウンリストから既存のデータベースを選択しないでください
[OK]ボタンをクリックすると、新しいデータベースが作成され、.bakファイルからすべてのデータが復元されます。
問題が解決することを願っています...
これは、常にバージョンの非互換性が原因で発生します。解決するには、次の手順に従います。
ステップ1:任意の名前でデータベースを作成します。(私たちの場合、AdventureWorks)
ステップ2:データベースをクリックして書き込み、[タスク] >> [復元] >> [データベース…]をクリックします。
手順3:復元画面で、オプションの3番目の選択に移動します。次に、「既存のデータベースを上書きする(置換あり)」チェックボックスを選択します。
ステップ4:[OK]をクリックします。データベースは正常に復元されます。
注:データベースをREPLACEで復元すると、古いデータベースが上書きされます。
テストのためにローカルに新しいdbを作成する必要があり、製品からバックアップがありました。最初にデータベースを作成し、このエラーを生成した新しいデータベースの上でBAKを実行しようとしました。復元画面で新しいデータベース名を取得しているときに、データベースを削除して復元しました。dbは復元時に自動的に作成されました。
これを非常に複雑にしている人もいます。これは非常に単純であることがわかりました。
1).bakファイルのデータベース名と同じ名前でデータベースを作成します。重要
2)データベースを右クリック| タスク>復元>データベース
3)[復元元]で[デバイスから]を選択します
4).bakファイルを選択します
5)以下のグリッドビューでデータベースのチェックボックスを選択します
6)右側の[ページの選択]で[オプション]を選択します
7)「複製設定を保持する(KEEP_REPLICATIONを使用)」というチェックボックスを選択します。
次に、[全般]ページに戻り、[OK]をクリックしてデータベースを復元します...これで完了です。
これは、システムドライブからバックアップファイルをインポートするのに役立ちました
WITH MOVE
WITH REPLACE, MOVE