我在數據庫中有很多存儲過程,並且如果存儲過程中有選擇的狀態,我想在後面添加(Nolock)所有這些選擇語句通過編寫腳本。在所有存儲過程中選擇語句之後添加(Nolock)通過在T-SQL中編寫腳本
我可以通過使用遊標和sys表獲得所有的存儲過程,但我沒有弄清楚如何找到精確選擇的狀態並在它們之後添加nolock。
我需要你的好主意。
在此先感謝,
我在數據庫中有很多存儲過程,並且如果存儲過程中有選擇的狀態,我想在後面添加(Nolock)所有這些選擇語句通過編寫腳本。在所有存儲過程中選擇語句之後添加(Nolock)通過在T-SQL中編寫腳本
我可以通過使用遊標和sys表獲得所有的存儲過程,但我沒有弄清楚如何找到精確選擇的狀態並在它們之後添加nolock。
我需要你的好主意。
在此先感謝,
嗯...我不會這樣做;到處添加NOLOCK
是SQL反模式。
還有其他的方法來達到同樣的效果:
調整事務隔離級別的應用程序調用數據庫,並將其設置爲READ UNCOMMITTED
,這將有同樣的效果如添加NOLOCK
所有的您SELECT
語句...查看:http://msdn.microsoft.com/en-us/library/ms189542.aspx
或實施READ COMMITTED SNAPSHOT
模式爲整個數據庫:http://msdn.microsoft.com/en-us/library/ms345124%28v=sql.90%29.aspx
事實上,我們自己的傑夫阿特伍德寫了,你可能想在這裏解決同一個問題:http://www.codinghorror.com/blog/2008/08/deadlocked.html
如果可能的話,我會跟選項#2去,但這些選項會可能在前面和後續工作中的工作量較少。
'NOLOCK'實際上只能用於特殊情況。 – 2011-08-09 13:58:07