none
SQLServer 2000 からの SQLServer 2008 R2 への移行について RRS feed

  • 質問

  • 現在運用中のSQLサーバ (OS:Windows 2003 R2, DB:SQLServer2000 SP不明) のデータベースを、新しいSQLサーバ(OS:Windows 2008 R2 SP1, DB:SQLServer 2008 R2)へ切り替える計画をしています。

    なにか留意すべき点、移行の参考資料などあれば教えていただけないでしょうか。

    今のところ、
     SQLServer2000 にてデータベースファイルをデタッチし、新しいサーバへ複製後に新しいサーバでアタッチする
    ことで切り替えが可能らしいとの情報で調査しているのですが、
     ・正しい手順はなにか
     ・実際に切り替えた際に問題等が発生するものかどうか
     ・あらかじめ考慮すべきことがあるか
    といったことが知りたいところです。

    よろしくお願いします。

    2011年4月13日 7:28

回答

  • SQL Server 2000でバックアップし、SQL Server 2008側で復元を行えば、自動的にデーターベースが変換されて移行されるでしょう。その後、alter userでユーザーの再マップが必要になるかもしれません。
    また、互換性レベルをどうするかの検討も必要だと思います。

    デタッチしてアタッチする方法は、データーベースを止めなければならないので最近はあまりやってなくてよくわかりません。すみません。

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    • 回答としてマーク 山本春海 2011年4月27日 4:52
    2011年4月13日 8:06
  • デタッチ→アタッチによるデータベースの移行も可能ですが、trapemiya さんが書かれているようにデータベースの停止を伴いますので、バックアップが取得できる領域があるのでしたら、バックアップ→リストアで移行されたほうがよろしいかと思います。

    デタッチの場合は何か問題が発生した場合は SQL Server 2000 でアタッチをしてデータベースを再認識をさせる必要がありますが、バックアップ → リストアの場合はその手間もありませんので。

    また、上位のバージョンでアタッチしたデータベースは下位のバージョンではアタッチできなくなりますので切り戻しの手順を考える必要がある場合にはご注意いただければと。
    # 上位のバージョンで取得したバックアップを下位のバージョンでリストアすることもできません。

    移行後に実施する一般的な作業としては、

    1. ALTER USER のよるログインの再マップ (以前の sp_change_users_login)
    2. DBCC UPDATEUSAGE による領域情報の更新
    3. sp_updatestats による統計情報の更新
    4. ALTER INDEX REBUILD によるインデックスの再構築
    5. 互換性レベルの変更 (必要に応じて)
    6. ページ検査の変更 (必要に応じて TORNPAGE→CHECKSUM)

    などがあるかと思います。

    SQL Server Upgrade Advisor というツールもありますので、こちらをご利用されると事前にアップグレードに際しての問題を調査することができます。
    アップグレード アドバイザーを使用したアップグレードの準備

    SQL Server 2000 の SQL Server Profiler で取得したトレースを上記のツールで使うことで移行後に問題になりそうなクエリの調査もすることができます。

    ご参考になれば幸いです。

    • 回答としてマーク 山本春海 2011年4月27日 4:52
    2011年4月13日 22:31
    モデレータ

すべての返信

  • SQL Server 2000でバックアップし、SQL Server 2008側で復元を行えば、自動的にデーターベースが変換されて移行されるでしょう。その後、alter userでユーザーの再マップが必要になるかもしれません。
    また、互換性レベルをどうするかの検討も必要だと思います。

    デタッチしてアタッチする方法は、データーベースを止めなければならないので最近はあまりやってなくてよくわかりません。すみません。

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    • 回答としてマーク 山本春海 2011年4月27日 4:52
    2011年4月13日 8:06
  • デタッチ→アタッチによるデータベースの移行も可能ですが、trapemiya さんが書かれているようにデータベースの停止を伴いますので、バックアップが取得できる領域があるのでしたら、バックアップ→リストアで移行されたほうがよろしいかと思います。

    デタッチの場合は何か問題が発生した場合は SQL Server 2000 でアタッチをしてデータベースを再認識をさせる必要がありますが、バックアップ → リストアの場合はその手間もありませんので。

    また、上位のバージョンでアタッチしたデータベースは下位のバージョンではアタッチできなくなりますので切り戻しの手順を考える必要がある場合にはご注意いただければと。
    # 上位のバージョンで取得したバックアップを下位のバージョンでリストアすることもできません。

    移行後に実施する一般的な作業としては、

    1. ALTER USER のよるログインの再マップ (以前の sp_change_users_login)
    2. DBCC UPDATEUSAGE による領域情報の更新
    3. sp_updatestats による統計情報の更新
    4. ALTER INDEX REBUILD によるインデックスの再構築
    5. 互換性レベルの変更 (必要に応じて)
    6. ページ検査の変更 (必要に応じて TORNPAGE→CHECKSUM)

    などがあるかと思います。

    SQL Server Upgrade Advisor というツールもありますので、こちらをご利用されると事前にアップグレードに際しての問題を調査することができます。
    アップグレード アドバイザーを使用したアップグレードの準備

    SQL Server 2000 の SQL Server Profiler で取得したトレースを上記のツールで使うことで移行後に問題になりそうなクエリの調査もすることができます。

    ご参考になれば幸いです。

    • 回答としてマーク 山本春海 2011年4月27日 4:52
    2011年4月13日 22:31
    モデレータ
  • 「バックアップ→復元」の方法がおすすめでしたか。

    その後、MS社が提供している、「旧バージョンからの移行とアップグレード実践ガイド」なる資料に行き当たり、読み進めています。
    やはり、データベースの整合性チェックも走るということで、移行作業に時間がとれるなら「バックアップ&復元」がよいと記載されていました。

    互換性レベルの指摘で調べてみたところ、SQLServer 2000 とSQLServer 2008R2とでは サポートされるレベルが異なるので事前に確認が必要ですね。

    ありがとうございます。

     

     

    2011年4月14日 0:57
  • なるほど、アタッチ・デタッチで失敗した際にはリカバリーが困難になるんですね。ますます、バックアップ→復元の方がより安全だと理解しました。

    移行後の一般的な作業を教えていただきありがとうございます。このへんの作業の有無に行き着くことができてなかったので助かります。
    これから、個々の作業の内容を調べていきます。

    また便利なツールの紹介ありがとうございます。「アップグレードアドバイザー」の利用、さっそく検討します。

     

    2011年4月14日 1:14
  • 防備録 追記

    SQLServerの認証方法が、Windows認証かつActivedirectoryの場合を除いて、ユーザの再マップが発生すると考えた方がよい。

    ユーザの再マップとは、
     SQLServerがログインのためのアカウント/パスワードをユニークなSIDのものに管理しているのに対し、データベースにもデータベースのユーザ名とログインユーザのSIDがペアで管理されている。
     データベースを復元した場合、SIDが必ずしも一致しないことからデータベスのアクセスの際に拒否される事態が発生する。
    「再マップ」を行いこの状態を解消する必要がある。 

    「再マップ」のキーワードよりは「孤立ユーザ」のキーワードで検索すると情報に行き着けます。

     

     

    2011年4月22日 8:40