none
データベース移行 RRS feed

  • 質問

  • ご教示お願いします。

    エンドユーザー様にて、システムリプレイスがあり

    現在SQLserver2005(以後、旧SQL) から SQLserver2012(以後、新SQL)に

    データベースを移行しようと思い

    ただ単純に、旧SQLの該当データベースをバックアップしました。(xxx.bakを作成)

    次に、直接旧SQLから新SQLへの移行はサポートされていないとのことなので

    SQLserver2008(以後、中SQL)を用意しました。

    そして、そのファイルを中SQLにてデータベースの復元を行いました。

    その後に、中SQLも同様にバックアップを行い、新SQLに復元を行いました。

    ただ、当該データベースからサンプルとしてテーブルをみたら、列がそろっておらず

    レコードの配列がおかしくなっていました。

    この方法は正しいのでしょうか?それともほかにバックアップファイルを用意しなくていは

    いけないのでしょうか?(たとえば、masterデータベースなど)

    お手数ですが、ご回答いただけたら幸いです。

    以上

    2014年8月12日 3:59

回答

  • 移行で使用した「中SQL」ではどうだったのでしょうか。

    そこでの確認はされましたか?

    また、ログインやバックアップデバイスなど他のサーバーオブジェクトは移行しないのでしょうか。

    これらも移行するのであればシステムデータベースも移行する必要がありますが。

    • 回答の候補に設定 星 睦美 2014年8月26日 4:36
    • 回答としてマーク 星 睦美 2014年9月8日 1:29
    2014年8月13日 0:55
  • 「ずれる」というのが良く分かりませんが、列が col1, col2 と複数あるテーブルで、col1 のデータが col2 に入っているということでしょうか?
    だとすると int 型の列に nvarchar 型のデータが入ったりしているということでしょうか?
    RDBMS は列毎に型と制約を持つので、データが別の列に移動することはありません。

    可能性があるとすると、破損した DB をそのままアップデート(復元時に内部的に行われています)した場合ですかね。
    ただバックアップ前に DBCC CHECKDB をしたときに判明するものですし、復元が失敗するはずですので、このようなことにはならないはずですが・・・。

    一応、改めて旧 SQL で DBCC CHECKDB は実行しておいてください。


    MCITP(Database Developer/Database Administrator)

    • 回答の候補に設定 星 睦美 2014年8月26日 4:36
    • 回答としてマーク 星 睦美 2014年9月8日 1:29
    2014年8月17日 15:21

すべての返信

  • ただ、当該データベースからサンプルとしてテーブルをみたら、列がそろっておらず

    レコードの配列がおかしくなっていました。

    ここがわかりにくいので、もう少し詳しい説明をお願いします。「テーブルをみたら」とありますので、どのようにして確認されたのかも合わせてお願いします。また、このようになったテーブルは他にもあるのでしょうか?

    移行の手順としては特に問題ないと思います(この手順だけで良いという意味ではありません)。masterデータベースなどシステムデータベースは移行する必要はありません。

    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    • 編集済み trapemiya 2014年8月12日 4:21 追記
    2014年8月12日 4:19
  • ご回答ありがとうございます。

    新SQLのManagement Studioを起動して

    サンプルのテーブルを「上位1000行の選択」を指定して

    結果が抽出され、列を確認したら

    隣の列のデータが次の列に配置されていたりし、ずれていました。

    (ただし、全ての列がずれているのではなく部分的にずれていた)

    後、旧SQLで設定した照合順序やバックアップ方法(単純や完全)の設定は

    ひきつがれないのでしょうか?

    以上

    2014年8月12日 5:49
  • 移行で使用した「中SQL」ではどうだったのでしょうか。

    そこでの確認はされましたか?

    また、ログインやバックアップデバイスなど他のサーバーオブジェクトは移行しないのでしょうか。

    これらも移行するのであればシステムデータベースも移行する必要がありますが。

    • 回答の候補に設定 星 睦美 2014年8月26日 4:36
    • 回答としてマーク 星 睦美 2014年9月8日 1:29
    2014年8月13日 0:55
  • 「ずれる」というのが良く分かりませんが、列が col1, col2 と複数あるテーブルで、col1 のデータが col2 に入っているということでしょうか?
    だとすると int 型の列に nvarchar 型のデータが入ったりしているということでしょうか?
    RDBMS は列毎に型と制約を持つので、データが別の列に移動することはありません。

    可能性があるとすると、破損した DB をそのままアップデート(復元時に内部的に行われています)した場合ですかね。
    ただバックアップ前に DBCC CHECKDB をしたときに判明するものですし、復元が失敗するはずですので、このようなことにはならないはずですが・・・。

    一応、改めて旧 SQL で DBCC CHECKDB は実行しておいてください。


    MCITP(Database Developer/Database Administrator)

    • 回答の候補に設定 星 睦美 2014年8月26日 4:36
    • 回答としてマーク 星 睦美 2014年9月8日 1:29
    2014年8月17日 15:21