J.D*_*.D. 5 sql-server-2008 sql-server stored-procedures metadata t-sql
Microsoft SQL Server 有一个名为sp_refreshview的系统存储过程,它更新传入的视图的元数据。
对我的所有视图定期运行此过程是否有任何不利之处?(例如性能统计受到影响等?)
我可以每晚、每小时、每隔几分钟运行一次吗?
如果这样做没有任何影响,这似乎是确保我的视图元数据在它们引用的基础实体可能发生更改时保持最新的好方法。
他们引用的基础实体有可能发生变化
这就是问题所在,你应该从源头上解决它。
如果您更新数据库中的对象足够频繁,以至于您必须自动进行频繁的元数据更正,则可能有机会改进流程。
并且您不应该在不更新引用它们的视图的情况下更新表。因此,视图应该成为架构修改工作流程的一部分。
您可以WITH SCHEMABINDING
在视图上使用,这将明确强制您不能在不知情的情况下删除架构绑定的情况下修改引用的对象。(作为额外的奖励,您的视图不能使用SELECT *
,这可能是这里问题的一部分)。
我在下面的文章中写到了这一点: