客户的数据库已从Oracle转换为MS Sql。在此之后,删除了几个视图(不再需要它们)。但是,我现在有时会收到消息
无法找到对象'sysadm.someview'或您没有 许可
此消息由存储的prog sys.sp_refreshsqlmodule
生成。当我再次添加“someview”视图时,它会给出相同的错误但是对于另一个视图。
所以我猜这个SP仍在尝试刷新前一段时间删除的视图。而不是必须再次添加这些视图,有没有办法告诉SP不要再次刷新这些视图?
或者,如果我重新添加所有视图,是否有办法以干净的方式删除它们以便SP知道?
谢谢!
答案 0 :(得分:1)
您必须拥有一些触发sp_refreshsqlmodule
的代码。此SP不只是出去尝试刷新所有视图。根据文档,它只会刷新指定的对象。
“更新当前指定的非架构绑定存储过程,用户定义函数,视图,DML触发器,数据库级DDL触发器或服务器级DDL触发器的元数据这些对象的持久性元数据,例如参数的数据类型,由于其底层对象的更改,可能会过时。“
此处提供完整文档。 http://technet.microsoft.com/en-us/library/bb326754.aspx