【发布时间】:2011-09-21 13:42:35
【问题描述】:
我继承了一个相当大的项目,该项目广泛使用 SQL Server(2005 和 2008)视图。
构建过程中的一个步骤是调用sp_refreshviews 系统存储过程,以确保对任何表的更改都不会破坏我们的视图。这很好用....除了大约三四个(超过 200 个)视图....
有了这些,它就会爆炸 - 给出奇怪的错误消息,例如
消息 15165,级别 16,状态 1, 程序 sp_refreshsqlmodule_internal,第 55 行
找不到对象 'vYourViewNameHere' 或者你没有 有权限。
这是大错特错 - 视图确实存在,我绝对可以从中选择。
我似乎找不到任何关于为什么会发生这种情况的简洁信息,是什么触发了它......有什么想法吗?我能做些什么来检测这些有问题的观点吗?我可以更改它们的定义,以便它们可以再次刷新吗?
更新:我为此在 Microsoft Connect 上记录了一个错误报告 - 如果您同意这看起来很奇怪并且需要修复,请投票!
【问题讨论】:
-
这Connect item与您的情况有关吗?
-
@Joe Stefanelli:试过了 - 结果相同 :-( 我放弃了其中一个问题视图,并使用适当的显式模式重新创建了它 - 仍然不喜欢刷新.. ..
-
sp_refreshview 需要更改相关视图的权限。您提到您可以从中进行选择,但您可以使用运行 sp_refreshview 的相同日志来修改单个视图吗?
标签: sql-server views