是SqlServer BCP全部还是全无?

时间:2013-09-24 13:05:08

标签: c# sql-server sqlbulkcopy bcp

我们有一些依赖于.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。

1 个答案:

答案 0 :(得分:0)

您应该使用SqlBulkCopy Constructor (SqlConnection, SqlBulkCopyOptions, SqlTransaction)构造函数,该构造函数接受SqlTransaction的参数。在SqlTransaction的实例下,批量复制将执行操作,如果失败,您可以选择回滚。

您可能还会看到:Transaction and Bulk Copy Operations

  

批量复制操作可以作为隔离操作或作为   多步骤交易的一部分。后一个选项使您   在同一个内执行多个批量复制操作   事务,以及执行其他数据库操作(如   插入,更新和删除)仍然能够提交或   回滚整个交易