SQLServerでデータ復元に失敗
サーバ hogehoge の復元に失敗しました。(Microsoft.SqlServer.SmoExtended)
SQLServer Management Studioで、バックアップファイルを復元すると、「オプション」タブの「既存のデータベースを上書きする」のチェックを行っていても、
といったエラーメッセージが表示される事がある。
原因
大体、復元作業をする時はサーバクラッシュ時で、急を要するので頭がパニクって回ってないことが多いのだが、大体、実データファイルがあるディレクトリのファイルを削除し忘れて、SQLSERVERが作ろうとする同じ名前のファイルがあるから復元できない事が多い。
上書きというオプションがあるのだから、ファイルが有っても上書きするべき処理の筈だが、逆にこのオプションがあるので気が付かない場合が多い。このエラー内容が理解し難く、「同じファイル名があります」ぐらいの気の利いたメッセージでも出してくれたら有難いのだが。
確認方法
SQLServer Management Studioで、データベースのプロパティーから実在するパスを確認するか、ファイル名で検索して同じファイルが無いか確認する。
すると大体そこにあったりする。
SQLServerの特定のインスタンスを削除してもフォルダやファイル自体は残ってしまう。ファイル階層も少々深い所にあるので、つい消し忘れてしまう。
今回はちょっと泣いた。
bakファイル を 復元する際 に
ファイルによってはなのですが
この要求のデータを取得できませんでした と
表示されてしまいます。
原因は何でしょうか?
こんばんわ。
そのメッセージダイアログの下側に別のメッセージは出ていませんか?有る場合、差し支えなければ教えてください。
また、SQLServerのバージョン、エディション、それから、バックアップした時と復元時のサーバ筐体やバージョンの差異等ありましたら合わせておしえてください。
現在のコメント内容では推測の域を超えませんが、バックアップ時のmdf、ldfファイル指定や、オプション設定で出る場合があります。
下にメッセージが出ていないです。
バージョンですか、、、
こちらは2017 で、
バックアップファイルは2008あたりでしょうか
再度確認します。
現場にいないので確認とれませんが
オプション設定で起きていると思います。
復元するファイルをチェックしたあと、
既存のデータベースに上書きをする。 に
チェックするために
オプション設定をクリックすると
このエラーが起きてしまいます。
おはようございます。
復元というよりも、移行でしょうか。
バージョンがかけ離れているので、色々な制限は出ているとおもいますが、
ファイルによってという事なので、バックアップ元に原因があるように思います。
ご存知とは思いますが、2008側の互換性レベルを確認して低くければ引き上げる必要も出てきます。
https://docs.microsoft.com/ja-jp/sql/t-sql/statements/alter-database-transact-sql-compatibility-level?view=sql-server-2017
https://docs.microsoft.com/ja-jp/sql/relational-databases/databases/view-or-change-the-compatibility-level-of-a-database?view=sql-server-2017
また、同じバージョンのマネジメントスタジオじゃないとうまくリストア出来なかった事例もあります。
バックアップ側オプション設定の要素も重要です。
左タブ全般のバックアップ先に、間違って既存ファイルに追加等すると復元するときにエラーが発生します。
もし、バックアップがまだ取得できる状況であれば、再度そこを見直してみてください。
単純に移行であれば、データベースのインポートではなく、
SQLテキストでインポートした方が早いかもしれません。
ファイルの復元ではなく、
データベースの復元でできました!
相談に乗ってくださりありがとうございました