如何告诉sp_refreshsqlmodule不刷新视图

时间:2014-01-30 13:43:00

标签: sql-server sql-server-2008 sql-server-2008-r2

客户的数据库已从Oracle转换为MS Sql。在此之后,删除了几个视图(不再需要它们)。但是,我现在有时会收到消息

  

无法找到对象'sysadm.someview'或您没有   许可

此消息由存储的prog sys.sp_refreshsqlmodule生成。当我再次添加“someview”视图时,它会给出相同的错误但是对于另一个视图。

所以我猜这个SP仍在尝试刷新前一段时间删除的视图。而不是必须再次添加这些视图,有没有办法告诉SP不要再次刷新这些视图?

或者,如果我重新添加所有视图,是否有办法以干净的方式删除它们以便SP知道?

谢谢!

1 个答案:

答案 0 :(得分:1)

您必须拥有一些触发sp_refreshsqlmodule的代码。此SP不只是出去尝试刷新所有视图。根据文档,它只会刷新指定的对象。

“更新当前指定的非架构绑定存储过程,用户定义函数,视图,DML触发器,数据库级DDL触发器或服务器级DDL触发器的元数据这些对象的持久性元数据,例如参数的数据类型,由于其底层对象的更改,可能会过时。“

此处提供完整文档。 http://technet.microsoft.com/en-us/library/bb326754.aspx