2016-02-22 65 views
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) 
+0

您是否嘗試過使用'bulkCopy.Options' TableLock ...? – Codexer

+0

bulkCopy和ExecuteSQL是否使用相同的連接?如果是這樣,基於MSDN這是不可能的。順便說一句,我檢查了一些SqlBulkCopy的例子,這些代碼使用「USING」語句。看看這個:https://msdn.microsoft.com/en-us/library/ex21zs8x(v=vs.110).aspx – FLICKER

+0

WriteToServer是同步的。我建議你運行一個SQL跟蹤來查看發送給SQL Server的實際請求。 –

回答

1

發現問題...插入時間戳由客戶端提供,而更新時間戳來自服務器。客戶端的時間提前2秒,然後服務器的時間..

我改變都應該使用服務器的getDate函數。問題解決了。

相關問題