トップ回答者
データベース移行

質問
-
ご教示お願いします。
エンドユーザー様にて、システムリプレイスがあり
現在SQLserver2005(以後、旧SQL) から SQLserver2012(以後、新SQL)に
データベースを移行しようと思い
ただ単純に、旧SQLの該当データベースをバックアップしました。(xxx.bakを作成)
次に、直接旧SQLから新SQLへの移行はサポートされていないとのことなので
SQLserver2008(以後、中SQL)を用意しました。
そして、そのファイルを中SQLにてデータベースの復元を行いました。
その後に、中SQLも同様にバックアップを行い、新SQLに復元を行いました。
ただ、当該データベースからサンプルとしてテーブルをみたら、列がそろっておらず
レコードの配列がおかしくなっていました。
この方法は正しいのでしょうか?それともほかにバックアップファイルを用意しなくていは
いけないのでしょうか?(たとえば、masterデータベースなど)
お手数ですが、ご回答いただけたら幸いです。
以上
回答
-
「ずれる」というのが良く分かりませんが、列が col1, col2 と複数あるテーブルで、col1 のデータが col2 に入っているということでしょうか?
だとすると int 型の列に nvarchar 型のデータが入ったりしているということでしょうか?
RDBMS は列毎に型と制約を持つので、データが別の列に移動することはありません。
可能性があるとすると、破損した DB をそのままアップデート(復元時に内部的に行われています)した場合ですかね。
ただバックアップ前に DBCC CHECKDB をしたときに判明するものですし、復元が失敗するはずですので、このようなことにはならないはずですが・・・。一応、改めて旧 SQL で DBCC CHECKDB は実行しておいてください。
MCITP(Database Developer/Database Administrator)
すべての返信
-
ただ、当該データベースからサンプルとしてテーブルをみたら、列がそろっておらず
レコードの配列がおかしくなっていました。
移行の手順としては特に問題ないと思います(この手順だけで良いという意味ではありません)。masterデータベースなどシステムデータベースは移行する必要はありません。
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
- 編集済み trapemiya 2014年8月12日 4:21 追記
-
「ずれる」というのが良く分かりませんが、列が col1, col2 と複数あるテーブルで、col1 のデータが col2 に入っているということでしょうか?
だとすると int 型の列に nvarchar 型のデータが入ったりしているということでしょうか?
RDBMS は列毎に型と制約を持つので、データが別の列に移動することはありません。
可能性があるとすると、破損した DB をそのままアップデート(復元時に内部的に行われています)した場合ですかね。
ただバックアップ前に DBCC CHECKDB をしたときに判明するものですし、復元が失敗するはずですので、このようなことにはならないはずですが・・・。一応、改めて旧 SQL で DBCC CHECKDB は実行しておいてください。
MCITP(Database Developer/Database Administrator)