SQL Serverで.bakファイルが復元できない時の対処法

結論から述べると恐らくバージョン違い
バックアップを作成したデータベースエンジンと同バージョンで復元をおこなうこと


まあまあアクセスがあるので異なるバージョン間でデータ移行する方法も作成。

http://trueman-developer.blogspot.com/2018/10/sql-server.html








環境


SqlServer 2008 R2
SQLManagement Studio 2008 R2
SQLManagement Studio 2012



DBエンジンとManagementoStudioの違い



SQL Server(データベースエンジン)とは実際にDBを操作する機能のこと
Management Studio はSQL Server のリリースと同時期にリリースされるSQL Serverを簡単に利用するための便利ツールのこと
.bakファイルから復元するためにはバックアップ作成時とリストア時でデータベースエンジンのバージョンを合わせる必要がある模様



.bakファイルを復元する方法



Managemetn StudioでSQL Serverへ接続した後
データベース右クリック → データベースの復元 → デバイスを選択 → 追加から復元対象ファイル.bakを選択 → 内容を確認にてクリックで復元が可能

SQL SERVER 復元

だが今回のケースでは復元できなかった

以下に試行錯誤した内容をメモしておく


オブジェクトをdbnullから他のタイプにキャストすることはできません


https://social.msdn.microsoft.com/Forums/vstudio/ja-JP/2ec5d646-5f48-4374-bc61-f0c90eb7bbda?forum=sqlserverja
検索してみたらこの辺りが出てくるが結局解決していない

以下のコマンドでも復元できるようなので試してみる(この段階では試行錯誤中なので一応載せてはおくが GUI上で[データベースを復元] と挙動は同じ模様)


以下は多分ミスっているので注意
PS SQLSERVER:\SQL\[userName]\SQLEXPRESS\Databases>
osql -U [username] -P [password] -Q"restore Siss from disk='C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL EXPRESS\MSSQL\Backup\bakFile.bak' with replace,stats=10"]
osqlコマンドでコマンドプロンプト上からリストアしてみる
がなにか間違えているのかうまく動かない

osqlはコマンドを発行しているだけなので Management Studio から直接Restoreすればいいのでは?と思い至る

以下のコマンドをManagementStudio 上で試してみる
restore DATABASE Test from disk='C:[backupFilePath]\bakFile.bak' with replace,stats=10


オペレーティング システムエラー 5 アクセスが拒否されました



コンパネ → 管理ツール → サービス → SQL Serverのプロパティ → ログオンタブ → ローカルアカウント → [デスクトップとの対話をサービスに許可]にチェック
http://komatumoto.blog55.fc2.com/blog-entry-196.html



メディア ファミリが正しい形式ではありません



データベースエンジンのバージョンが違う模様
http://nusoft.jp/blog/blog/2013/05/22/sql-server%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%95%AA%E5%8F%B7/
バックアップを作成したManagemantStudioのバージョンがいまのよりも高い?




SQL Server 2012のインストール



新規にインストールを行う

SqlServer インストール


名前付きインスタンスは識別できるように名前をつける

SqlServer インストール2

イントール済みインスタンスに涙ぐましい努力の跡が見える (TT)


メッセージ 3169、レベル 16、状態 1、行 1
データベースはバージョン 12.00.5000 を実行中のサーバーにバックアップされました。このバージョンは、このサーバー (バージョン 11.00.2100 を実行) とは互換性がありません。バックアップをサポートしているサーバーでデータベースを復元するか、またはこのサーバーと互換性のあるバックアップを使用してください。


光明が見えてきたか
「ver12は今のver11と互換性がないよ」と言われているようなのでもう一つバージョンを上げてみる



...


.....


.........


Σb( `・ω・´)グッ



ちなみにここまでくれば(バックアップファイルを作成したエンジンのバージョンさえわかれば)GUI上で[データベースを復元]からいけるはずです



バージョン情報を教えてくれればこんなことには...
ひょっとしたら上位のバージョンだったら復元できるんだろうか(無理っぽい)
復元スピードは落ちると思うけど「データスクリプトを作成」からやってほしい


2016年8月26日金曜日