3

新しいサーバーに移動するSQLServer2008データベースが本番環境にあります。現在のデータベースには、最大400GBの.MDFファイルが1つあります。新しいサーバーはSQLServer2012を実行し、ミラーリングされたIntel910SSDを実行します。これらのドライブは、4x200GBのパーティションを提供します。

これを機能させるには、を使用してシングル.MDFを4つの小さなものに分割する必要がありDBCC SHIRNKFILE with EMPTYFILEます。私たちはこれをテストで行いましたが、それでも約3.5時間かかりますが、これは長すぎます。既存のデータベースはOLTPであり、365/24/7であり、このプロセス中にブロッキングが発生することがわかっているため、最初に本番環境でそれを行うことはできません。

私の質問ですが、データベースを一時的な場所にある新しいサーバーにバックアップして復元し、新しいファイルを作成し、新しい場所にEMPTY一時的なものを作成して.MDFから、トランザクションログを適用する方法はありますか?そうすれば、現在の古い本番環境が稼働している間にデータを移動してから、短時間のシャットダウンを実行し、ログを適用して、新しいDBを起動できますか?

または、ダウンタイムを最小限に抑えて、異なるドライブ上の1つのファイルでサーバーAと4つのファイルでサーバーBから取得する他のオプションはありますか?

4

1 に答える 1

1

ディスク容量があれば、できると思うのは次のとおりです。

  • 新しいサーバーでデータベースを復元します
  • 新しいファイルグループを作成する
  • 新しいファイルグループにすべてのインデックスを作成しますDROP_EXISTING=ON(そして新しいファイルグループを指定します)
  • 古いファイルグループを削除します

これはラージオブジェクトデータでは機能しません。手動で新しいテーブルに移動する必要があります。

このための構文は次のようになります。

CREATE CLUSTERED INDEX [index]  
ON [schema].[table]([columns)
WITH (DROP_EXISTING = ON, ONLINE = ON) 
ON [filegroup]

新しいインデックスが作成されている間、インデックスはオンラインのままである可​​能性があります。ただし、これにより、tempdbはより多くのスペースを使用します。

于 2013-03-15T00:35:23.173 に答える