SqlBulkCopy有什麼缺點

sqlbulkcopy

我已經做了一些研究“用C#將大量數據插入數據庫的麻煩方式”然後很多人建議我使用SqlBulkCopy。在我嘗試之後,它真的讓我很驚訝。毫無疑問,SqlBulkCopy非常快。似乎SqlBulkCopy是插入數據(特別是大數據)的完美方式。但為什麼我們不要一直使用它。使用SqlBulkCopy有什麼缺點嗎?

一般承認的答案

我能想到的兩個原因:

  1. 據我所知,它僅適用於Microsoft SQL Server
  2. 在許多正常工作負載中,您不進行批量insert ,而是偶爾insertselect s和update s混合。 Microsoft自己聲明在SqlBulkCopy MSDN頁面上正常insert對此更有效。

請注意,如果您希望SqlBulkCopy等同於普通插入,那麼至少您必須將SqlBulkCopyOptions.CheckConstraints參數傳遞給它。


熱門答案

SqlBulkCopy也適用於Oracle v11,但它是由安裝Oracle Client時獲得的Oracle .NET程序集提供的。 SqlBulkCopy類基本上由目標數據庫引擎的提供者逐個實現。

但是有一個巨大的缺點 - 絕對沒有錯誤報告。例如,如果您更新了DataSet中的數據,正在使用適配器將其刷新回DB,並且存在密鑰違規(或任何其他故障),則罪魁禍首DataRows將.HasErrors設置為true,您可以在引發異常消息時將其添加到異常消息中。

使用SqlBulkCopy,您只需獲取錯誤的類型即可。祝你好運調試吧。



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow