我在数据库中有很多存储过程,并且如果存储过程中有选择的状态,我想在后面添加(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