2

DataTableに12,000行あり、WriteToServerを試行するとタイムアウトになります。一度に全部ではなく、一度にDataTableの一部だけをデータベースに書き込む方法はありますか?現在、データベースへのインターネット接続が不良です。一度に500行しか書き込めない場合は、タイムアウトを回避できます。これを行う方法はありますか?

4

2 に答える 2

3

あなたは見てみるべきですSqlBulkCopy.BatchSize

BatchSize行が処理されたとき、または宛先データソースに送信する行がなくなったときに、バッチが完了します。

ゼロ(デフォルト)は、各WriteToServer操作が単一のバッチであることを示します。

UseInternalTransactionオプションを有効にせずにSqlBulkCopyインスタンスが宣言されている場合、行は一度にサーバーのBatchSize行に送信されますが、トランザクション関連のアクションは実行されません。UseInternalTransactionが有効な場合、行の各バッチは個別のトランザクションとして挿入されます。

BatchSizeプロパティは、いつでも設定できます。バルクコピーがすでに進行中の場合、現在のバッチは前のバッチサイズに従ってサイズ設定されます。後続のバッチは新しいサイズを使用します。BatchSizeが最初はゼロで、WriteToServer操作の進行中に変更された場合、その操作はデータを単一のバッチとしてロードします。同じSqlBulkCopyインスタンスでの後続のWriteToServer操作は、新しいBatchSizeを使用します。

ここで参照

于 2012-04-07T15:09:08.840 に答える
0

私は同じ問題を抱えていました、私は単にこのようにしてそれを解決しました:

Dim strConnection as string="myconnectionstring"
Dim sqlBulk As New SqlBulkCopy(strConnection)
sqlBulk.BulkCopyTimeout = 0
于 2016-09-23T20:02:53.060 に答える