2011-11-24 44 views
0

我無法更新SQL Server(2005和2008)中的某些行。如何用最小的鎖更新nvarchar(max)列

通常,當我嘗試在運行查詢(select * from thistable), 時嘗試更新一行時,我會啓動更新命令並且由於超時/鎖定問題而失敗。

它只出現在nvarchar(max)/text列的表上!

即使我試圖SELECT * FROM thistable WITH(ROWLOCK),我確實遇到同樣的問題。

所以我在這裏的基本問題是:

我可以激勵SQL Server不要鎖定超過實際行?

編輯:我先運行SELECT之後,我嘗試更新...


有在SQL-服務器鎖定一個很好的解釋on simple talk

+0

@marc_s:爲什麼我得到這些鎖進行更新? –

+0

@marc_s:所以你沒有解決方案嗎? –

+0

@marc_s:我想你不明白我的問題。我只更新一(1)行,我不能這樣做,因爲選擇不允許。在沒有文本列的表格上,我沒有任何問題。 –

回答

1

嘗試使用:

SELECT * FROM thistable (NOLOCK) 

您的選擇語句。

然後正常運行更新。

+0

會給這個嘗試(可惜它涉及到改變更新命令生成器機制) –

+0

我聽到你在那裏,當你不得不去那些長度時,這是一種痛苦。在我工作的最後一個地方,我們有一個內部策略,在使用NOLOCK完成所有選擇語句的情況下,如果您沒有:DBA被允許追捕您:-) – shawty

+0

我不能夠感謝你!我將嘗試下次使用另一個SQL Server :-(NOLOCK爲查詢做了訣竅(最後)爲您的DBA +1(可悲) –

相關問題