我们有一些依赖于.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。
你应该使用SqlBulkCopy Constructor (SqlConnection, SqlBulkCopyOptions, SqlTransaction)
构造函数,它为SqlTransaction
提供一个参数。在SqlTransaction
的实例下,批量复制将执行操作,如果失败,您可以选择回滚。
您可能还会看到:Transaction and Bulk Copy Operations
批量复制操作可以作为隔离操作或作为多步骤事务的一部分执行。后一个选项使您可以在同一事务中执行多个批量复制操作,以及执行其他数据库操作(如插入,更新和删除),同时仍能提交或回滚整个事务。