【发布时间】:2016-06-13 17:07:50
【问题描述】:
我正在寻找一个可以在我的服务器上运行的脚本,以便为我的数据库中的所有表创建没有锁定的视图。谢谢!
【问题讨论】:
-
你能解释一下原因吗?
-
设置Bad Habits to kick - putting NOLOCK everywhere - 不推荐在任何地方使用它 - 恰恰相反!
标签: sql-server views nolock
我正在寻找一个可以在我的服务器上运行的脚本,以便为我的数据库中的所有表创建没有锁定的视图。谢谢!
【问题讨论】:
标签: sql-server views nolock
虽然我同意这是一个坏主意,但通过展示一些示例仍然可能会有所收获/学习。但是——是的——这可能是一个非常糟糕的主意,但在某些情况下这可能是有道理的。
如果这是一次性的事情,您可以这样做,这将简单地为带有(nolock) 的视图创建 DDL。您只需要复制粘贴并执行。如果这需要动态生成,则需要利用更多。
关于以下内容的另一个警告——它在没有模式绑定的视图中使用select *。对这些类型的视图要格外小心,因为如果基础表结构发生变化,它们不会自动更新。除非您有其他保护措施,否则对视图中的列进行完全限定是明智且良好的做法。
select '
create view ' + name + 'MayBeABadIdea as select * from ' + name + ' (nolock);
go'
from sys.objects
where type = 'U'
order by name;
【讨论】: