SqlBulkCopy有什么缺点

时间:2009-06-12 10:09:05

标签: sqlbulkcopy

我已经做了一些研究“用C#将大量数据插入数据库的麻烦方式”然后很多人建议我使用SqlBulkCopy。在我尝试之后,它真的让我很惊讶。毫无疑问,SqlBulkCopy非常快。看来SqlBulkCopy是插入数据(特别是大数据)的完美方式。但是为什么我们不要一直使用它。使用SqlBulkCopy有什么缺点吗?

2 个答案:

答案 0 :(得分:13)

对于Oracle v11也存在SqlBulkCopy,但它是由安装Oracle Client时获得的Oracle .NET程序集提供的。 SqlBulkCopy类基本上由目标数据库引擎的提供者逐个实现。

但是有一个巨大的缺点 - 绝对没有错误报告。例如,如果您更新了DataSet中的数据,正在使用适配器将其刷新回DB,并且存在密钥违规(或任何其他故障),则罪魁祸首DataRows将.HasErrors设置为true,您可以在引发异常消息时将其添加到异常消息中。

使用SqlBulkCopy,您只需获取错误的类型即可。祝你好好调试它。

答案 1 :(得分:9)

我能想到的两个原因:

  1. 据我所知,它仅适用于Microsoft SQL Server
  2. 在很多正常工作负载中,您不会批量insert,而是偶尔insertselectupdate混合。微软自己声称,SqlBulkCopy MSDN page上的insert正常SqlBulkCopy更有效率。
  3. 请注意,如果您希望SqlBulkCopyOptions.CheckConstraints等同于普通插入,那么至少您必须将{{1}}参数传递给它。

相关问题