且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何让依赖视图在 SQL Server 中自动更新?

更新时间:2023-01-30 12:37:51

还有 sp_refreshsqlmodule 我更喜欢它,因为你也可以将它用于不是视图的模块.不过,要构建一个刷新所有视图的脚本,您可以这样做:

There is also sp_refreshsqlmodule which I prefer only because you can also use it for modules that aren't views. To build a script that refreshes all views, though, you could do this:

DECLARE @sql NVARCHAR(MAX);
SET @sql = N'';

SELECT @sql = @sql + N'
  EXEC sys.sp_refreshsqlmodule 'N'' 
  + QUOTENAME(s.name) + N'.'
  + QUOTENAME(v.name) + N''';'
FROM sys.views AS v
INNER JOIN sys.schemas AS s
ON v.[schema_id] = s.[schema_id]
WHERE v.is_ms_shipped = 0
-- AND v.name LIKE '%EmailReceivedView%'
;

PRINT @sql;
-- EXEC sys.sp_executesql @sql;

但更重要的是,这正是为什么你不应该在视图中使用 SELECT *.

But more to the point, this is exactly why you shouldn't use SELECT * in a view.