質問: `char(10), varchar(512), nvarchar(512), nvarchar(512)`列を持つSQL Serverテーブルにインポートする、大きな(〜50Gb、〜300ml行)タブ区切りファイルがあります。 T-SQL、SSISまたはC# SqlBulkCopyクラスを使用して一括インポートするのに約1日かかります。 このデータをロードする方法はありますか? または、私は削除または変更することができますそれを減速させるいくつかの状態がありますか?
回答: 既存の表に挿入する場合は、インポートする前にすべての索引を削除し、インポート後に索引を再作成します。 SSISを使用している場合は、バッチを調整してサイズを調整できます。 このような大量のデータロードに対して、サーバーに十分なメモリがあることを確認します。 ローカルサーバー上でロード操作を実行します(ファイルをローカルにコピーし、ネットワーク経由でロードしないでください)。 一度に数百MBのチャンク(デフォルトでは、通常、マスターデータファイル.mdfの場合は1MB増えます)など、妥当な値に宛先データベースとトランザクションログの自動拡張オプションを設定します。成長の操作は遅い/高価なので、これらを最小限に抑えたい。 データファイルとログファイルが高速ディスク上にあることを確認してください。できるだけ別のLUNに配置することを推奨します。理想的には、ログファイルをミラー化された別個のLUNに保存することをお勧めします(オプションについては、ストレージ管理者またはホスティングプロバイダと話す必要があります)。