加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 08:50:03 所属栏目:MsSql教程 来源:网络整理
导读:我继承了一个相当实质的项目,它广泛使用SQL Server(2005和2008)视图. 构建过程的一个步骤是调用sp_refreshviews系统存储过程,以确保任何表中的更改都不会破坏我们的视图.这工作很好….除了大约三四个(200个)视图…. 与那些,它只是炸弹 – 给出奇怪的错误信息,
我继承了一个相当实质的项目,它广泛使用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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读