SQL Server 2012データベースと、300万行、おそらく50列のテーブルがあります。無人のバックグラウンドの.netプロセス(SQLまたはPowershellコマンドを発行する可能性があります)をテキストファイルにエクスポートする最速の方法は何ですか?.netプロセスは、エクスポートがいつ完了したか、またはエラーが発生したかどうかを知る必要があります。データ型はall int
またはになりnvarchar
ます。
私は、ado.netを使用してselect *
コマンドを実行し、データリーダーをループして各レコードのファイルに書き込む純粋なC#コードは低速であり、これを並列化する方法はないと想定しています。
エクスポートは、SQL Serverマシンのローカルフォルダーではなく、リモート共有ネットワークフォルダーに行うことが理想的です。SQL ServerはHAクラスターになります。SSISはこれに適していますか、データ変換は必要ありませんか?
.NetプロセスはマシンAで実行され、SQL ServerはマシンBで実行され、最終的なファイルの宛先はネットワーク共有です。1つのオプションは、SQLサーバーがファイルをネットワーク共有に直接書き込むことです。もう1つのオプションは、SQL ServerがマシンAに書き込み、ファイルが書き込まれると、.netプロセスがそれをネットワーク共有にコピーすることです。正式なSLAはありませんが、ファイルの書き込みに30分から1時間かかります。
"Ideally the export will be to a remote shared network folder and not a local folder on the SQL Server machine."
-.NETアプリはどこから実行されますか?最悪の場合、これはデータが2つのネットワークホップを移動する必要があることを意味し、おそらく最大のボトルネックになります。また、行の数はいくぶん無関係です-おおよその合計データサイズはどれくらいですか?このプロセスのために満たす必要があるパフォーマンスSLAはありますか?