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