DataTableに12,000行あり、WriteToServerを試行するとタイムアウトになります。一度に全部ではなく、一度にDataTableの一部だけをデータベースに書き込む方法はありますか?現在、データベースへのインターネット接続が不良です。一度に500行しか書き込めない場合は、タイムアウトを回避できます。これを行う方法はありますか?
2 に答える
あなたは見てみるべきですSqlBulkCopy.BatchSize
BatchSize行が処理されたとき、または宛先データソースに送信する行がなくなったときに、バッチが完了します。
ゼロ(デフォルト)は、各WriteToServer操作が単一のバッチであることを示します。
UseInternalTransactionオプションを有効にせずにSqlBulkCopyインスタンスが宣言されている場合、行は一度にサーバーのBatchSize行に送信されますが、トランザクション関連のアクションは実行されません。UseInternalTransactionが有効な場合、行の各バッチは個別のトランザクションとして挿入されます。
BatchSizeプロパティは、いつでも設定できます。バルクコピーがすでに進行中の場合、現在のバッチは前のバッチサイズに従ってサイズ設定されます。後続のバッチは新しいサイズを使用します。BatchSizeが最初はゼロで、WriteToServer操作の進行中に変更された場合、その操作はデータを単一のバッチとしてロードします。同じSqlBulkCopyインスタンスでの後続のWriteToServer操作は、新しいBatchSizeを使用します。
ここで参照
私は同じ問題を抱えていました、私は単にこのようにしてそれを解決しました:
Dim strConnection as string="myconnectionstring"
Dim sqlBulk As New SqlBulkCopy(strConnection)
sqlBulk.BulkCopyTimeout = 0