Google で検索した後、SQLSRV32 odbc ドライバーが MARS をサポートしていないことがわかりました。これに対する回避策は何ですか。私が推測する 1 つの方法は、いくつかの SQL コマンドの結果のループを停止することです。しかし、私の場合、30〜40のテーブルを作成し、一度に約400〜500行のデータを挿入する必要があります。単一のSQLコマンドごとに接続を開いたり閉じたりするのは良い考えですか.助けてください
質問する
580 次
1 に答える
1
ステートメントごとに接続を開いたり閉じたりしないでください。接続を開いて、その 1 つの接続を使用する複数のコマンドを作成します。15,000 件までのレコードを挿入するのにそれほど時間はかかりません。ODBC でサポートされているかどうかはわかりませんが、SQL Server の一括コピー機能を調べて、このようなことを行うこともできます。
MARSについて最後に一言。MARS は、結果セットを返す同じ接続で複数の同時クエリを実行する場合にのみ重要です。ここでは挿入を行っているため、これは実際には問題ではありません。
また、挿入を行うために複数のスレッドを実行することを妨げるものは何もありません。おそらく、コアごとにスレッドを使用して、テーブルごとに 1 つのスレッドを実行します。Parallel.ForEach がここで役立ちます。
于 2012-05-04T05:38:02.470 に答える