sql-server – SQL Server 2008 – sp_refreshview在一些视图中爆炸

前端之家收集整理的这篇文章主要介绍了sql-server – SQL Server 2008 – sp_refreshview在一些视图中爆炸前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我继承了一个相当实质的项目,它广泛使用sql Server(2005和2008)视图.

构建过程的一个步骤是调用sp_refreshviews系统存储过程,以确保任何表中的更改都不会破坏我们的视图.这工作很好….除了大约三四个(200个)视图….

与那些,它只是炸弹 – 给出奇怪的错误信息,如

Msg 15165,Level 16,State 1,
Procedure
sp_refreshsqlmodule_internal,Line 55
Could not find object
‘vYourViewNameHere’ or you do not
have permission.

这是错误的 – 那个视图确实存在,我绝对可以从中选择.

我似乎没有找到任何关于为什么会这样的简明扼要的信息,什么触发它…任何想法?有什么可以做的来检测这些有问题的观点吗?我可以改变他们的定义,以便他们再次刷新吗?

更新:我记录了Microsoft Connect的错误报告 – 如果您同意这似乎很奇怪,需要修正,请投票!

https://connect.microsoft.com/SQLServer/feedback/details/676728/sp-refreshview-crashes-with-misleading-error-on-views-with-schemabinding

解决方法

我注意到你提到的评论有SCHEMABINDING.我几乎可以保证这是问题. Books online具体说,这是用于非模式绑定视图.

方案绑定的视图不会允许发生中断更改,因此更新元数据是不必要的.你可以安全地跳过它.

您可以识别所有的schemabound视图,如下所示:

SELECT * FROM sys.views WHERE OBJECTPROPERTY(object_id,'IsSchemaBound')=1

猜你在找的MsSQL相关文章