这两个命令有什么不同?
刷新视图仅适用于视图,而重新编译仅适用于存储过程?或者还有其他一些不同?
发布于 2017-06-16 19:15:28
您应该使用sp_refreshview。sp_recompile仅适用于触发器和存储过程。
发布于 2021-12-19 02:13:54
这两个系统过程都可以在视图或表上使用。然而,它们做的是非常不同的事情。
sp_refreshview 'MyView'会刷新视图的元数据。这意味着对基表所做的任何DDL更改(例如ALTER)都将反映在视图中。这对于使用select *的视图尤其重要。
sp_recompile 'MyView'会重新编译引用视图的所有过程、触发器和函数,并获得新的查询计划。它不会更新视图的元数据:如果视图的基表已经更改,那么元数据仍然是不正确的。
您可以在此fiddle中看到区别。请注意,只有在执行sp_refreshview之后,才会显示新列。
https://stackoverflow.com/questions/44587854
复制相似问题