正如他們所說在收音機 - 長時間收聽者第一次來電....DataReader和SQLCommand
這是我的問題。 VS 2005 SQL Server 2005數據庫。 Windows窗體應用程序。 C#。大桌 - 780K記錄。我將它稱爲源表。需要循環訪問源表,併爲每個記錄對另一個表執行一些操作,然後將其寫回源表完成。我沒有得到儘可能更新第二個表尚未...
通過使用連接對象A.對於每個記錄使用DataReader源表中的所有記錄我環路我建立一個更新語句來更新源表以表明這個記錄已經被處理 - 並且使用SQL命令對連接對象B做這個uodate。所以不同的連接對象,因爲我知道dataReader想要獨佔。
這是問題所在。處理X記錄後 - 其中X似乎大約爲60 - 更新超時。
雖然寫這個 - 有趣的是如何發生這種情況是不是 - 我的大腦告訴我這是事務隔離和/或鎖定...即辦。我讀通過源記錄使用DataReader但改變的記錄...我可以看到不同的交易這造成的問題隔離,所以我會考慮這樣做......
任何人都看到了這一點,並知道如何解決它?
乾杯
皮特
不能在數據庫內完成 - 大量的邏輯RE更新我想用C#編寫的第二個表 - 並且已經有一些代碼。在回到這裏之前,我嘗試過nolock,並解決了這個問題。爲什麼下一個問題 - 使用nolock執行讀者使用的查詢不會阻止作者 - 那麼當我們不使用nolock時,這告訴我們什麼 - 源記錄在數據讀取器的持續時間內是否被鎖定? – 2010-12-15 03:20:09
是的,記錄可能被鎖定在共享鎖上進行讀取(即爲了確保它們在讀取期間一致),所以不能對鎖定的記錄執行更新。其他連接將能夠查看記錄,但不修改它們。 – 2010-12-15 18:38:23