我不知道爲什麼SqlBulkCopy不會插入來自閱讀器的所有記錄。代碼:ASP.NET SqlBulkCopy不會插入服務器上的所有記錄
using (OleDbDataReader dr1 = cmd.ExecuteReader())
{
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(ss, SqlBulkCopyOptions.TableLock, null))
{
bulkCopy.BulkCopyTimeout = 0;
bulkCopy.BatchSize = 500;
bulkCopy.DestinationTableName = tableName;
try
{
bulkCopy.WriteToServer(dr1);
}
catch (Exception ex)
{
Log.LogSystemLog(ex.ToString());
return false;
}
}
GC.Collect();
dr1.Close();
}
我想散裝大約300K條記錄。它運行時,我從本地運行到同一個數據庫,但是當我從服務器運行它 - 它總是插入~7K記錄...並沒有錯誤或異常。在服務器上有4GB可用RAM。在本地主機〜1,5GB。
我不知道爲什麼它在localhost上正常工作,但在服務器上它不是。
SqlBulkCopy不是buggy。也許你的日誌記錄被破壞或者你錯過了日誌消息。刪除捕獲並讓錯誤冒泡。不要使用布爾返回值來傳播錯誤。這導致他們不容易注意到他們。或者,您的讀者返回的行數比您認爲的要少。 – usr
但是爲什麼當我調試時(在本地主機上),相同的代碼工作正常? – user3091350
也許數據不同或批次超時或有網絡短信。我們永遠不會知道你是否100%確信你會得到錯誤(如果有的話,可能會出現這種情況)。直到你沒有人可以幫助你。沒有錯誤信息,您將不會收到有用的答案。 – usr