【发布时间】:2013-07-24 10:48:32
【问题描述】:
说,您从 C# 开始一个 SqlTransaction,在其中您将 DataTable 中的数据插入到 SQL 表中,但是这些数据包含大量数据,因此您在 SQL 事务中使用 SqlBulkCopy 来“分块”执行此操作,并且仅当所有块复制成功时才提交事务。
现在,假设您知道插入的值的长度有时会超过目标表中的最大列大小,因此 SqlBulkCopy 将在该特定“块”的点上失败。是否有可能(甚至可取)捕获此异常并更改表/列以增加目标列的最大长度,然后继续 SqlBulkCopy'ing 数据拾取下一个要复制的“块”,即使您没有提交了您开始时的“插入事务”?
那么,试着解释一下,是否可以启动一个 DML 事务,在这个未提交的事务中间停止,执行一个 DDL 来更改目标表,然后完成原始 DML 并提交它?
【问题讨论】:
标签: c# ddl sqlbulkcopy dml sqltransaction