我们有一些依赖于.NET SqlBulkCopy API的关键代码。有时,此代码将失败,并显示以下错误:
System.Data.SqlClient.SqlException : Insert bulk failed due to a schema change of the target table.
This blog post表明这是一个短暂的,几乎不可避免的错误。我想知道的是,当发生此错误时,是否保证没有插入任何行(如果是这样,我可以简单地捕获此异常并在.NET端重试BCP操作)?
我正在使用SqlServer 2008。
答案 0 :(得分:0)
您应该使用SqlBulkCopy Constructor (SqlConnection, SqlBulkCopyOptions, SqlTransaction)
构造函数,该构造函数接受SqlTransaction
的参数。在SqlTransaction
的实例下,批量复制将执行操作,如果失败,您可以选择回滚。
您可能还会看到:Transaction and Bulk Copy Operations
批量复制操作可以作为隔离操作或作为 多步骤交易的一部分。后一个选项使您 在同一个内执行多个批量复制操作 事务,以及执行其他数据库操作(如 插入,更新和删除)仍然能够提交或 回滚整个交易。