新しいサーバーに移行する必要がある大きな(1.2テラバイト)SQL Serverデータベースがあります。ほとんどのデータベースは、1.25 TB=データファイルの1つにあり、管理しやすい550 GBのファイル(実際には空です)に少し置かれています。
少し注意が必要です。移行先のサーバーには3つの700 GBボリュームしかないため、このゴリアテを何らかの方法で3つの等しいチャンクに分割する必要があります。私が見つけたほとんどのアドバイスは、3つのターゲットファイルを作成し、メインファイルでDBCC SHRINKFILE EMPTYFILEを実行してそれをターゲットに空にすることですが、データベースがこれほど大きい場合は時間がかかります。
これほど大きなデータベースを分割するための推奨される方法はありますか? Sql Server Integration Servicesのデータエクスポート機能を使用して、適切なファイル構造を持つクローンデータベースにデータをダンプすることを検討していますが、もっと良い方法があるかどうか知りたいです。
DBCC SHRINKFILE-はシングルスレッドになります–これは長いランタイム。
また、SQL Server Integration Servicesのデータエクスポートは、データベースのサイズが大きいため(1 TB)、遅くなります。
代わりに、データベースでBCP OUT(バイナリ形式)およびBULK INSERTを探す必要があります。
alter table <table_name> (LOCK_ESCLATION = DISABLE)
を使用して実行できます。-a
スイッチがあり、パケットサイズを指定できます。SSISを使用する場合は、接続マネージャーのプロパティで実行できます-> PacketSize = 32767-E
起動パラメーターの使用を検討してください。また、ハードウェアレベルでは、
ここで提供したBCPおよびBULK INSERTスクリプトを確認します
注:データのロード時に、ディスクのパーティション分割、レイアウト、CPUの数、NUMA構成などのハードウェアもパフォーマンスに大きな影響を与えます。
優れた読書: