2
我編寫了一個程序來使用sqlCopy插入一些記錄以加快處理速度,然後代碼根據新插入的記錄執行和更新[在另一個表上]的語句。BulkInsert之前正在執行更新
問題是更新幾乎總是在插入之前執行! [根據插入和更新行的時間戳,大約2秒鐘之前..]插入之後,我可以使更新執行的唯一方法是讓代碼睡着2-3秒..是否有更好的方法在代碼繼續之前確保插入完成的方法?
我甚至捕獲了RowsCopied事件,這些行在更新之前立即被複制。但在數據庫中,更新會在更早的時候進入。
bulkCopy.WriteToServer(table)
Dim Sql = "Update tbl Set Total = (select sum(qty) from Inserttbl where inId = ID)"
ExecuteSQL(Sql)
您是否嘗試過使用'bulkCopy.Options' TableLock ...? – Codexer
bulkCopy和ExecuteSQL是否使用相同的連接?如果是這樣,基於MSDN這是不可能的。順便說一句,我檢查了一些SqlBulkCopy的例子,這些代碼使用「USING」語句。看看這個:https://msdn.microsoft.com/en-us/library/ex21zs8x(v=vs.110).aspx – FLICKER
WriteToServer是同步的。我建議你運行一個SQL跟蹤來查看發送給SQL Server的實際請求。 –