0

たとえば、DataTable から SQL テーブルにデータを挿入する C# から SqlTransaction を開始するとしますが、このデータは大量のデータであるため、SQL トランザクション内で SqlBulkCopy を使用して「チャンクで」実行し、すべてのチャンクが正常にコピーされた場合のトランザクション。

ここで、挿入される値の長さがターゲット テーブルの最大列サイズを超える場合があり、その特定の「チャンク」に対してその時点で SqlBulkCopy が失敗することがわかっているとします。この例外をキャッチし、テーブル/列を変更してターゲット列の最大長を増やしてから、SqlBulkCopy を続行して、コピーする次の「チャンク」を取得することは可能ですか (またはお勧めします)あなたが始めた「挿入トランザクション」をコミットしましたか?

つまり、これを言い換えると、DML トランザクションを開始し、このコミットされていないトランザクションの途中で停止し、DDL を実行してターゲット テーブルを変更し、元の DML を完成させてコミットすることは可能ですか?

4

1 に答える 1