首页 > 解决方案 > 即使基础表中存在数据,SQL Server 视图也是空的

问题描述

我正在运行 Azure SQL Server,但我遇到了与视图相关的问题。我有一个基于其他两个视图的视图(我将其称为viewCUNION ALL,即

SELECT ColA
      ,ColB
FROM dbo.viewA

UNION ALL

SELECT ColA
      ,ColB
FROM dbo.viewB

如果我截断底层viewAviewB视图中的所有表,并重新导入这些截断表中的数据,有时viewC如果SELECT从中仍然为空。这种行为很奇怪,我想知道它是否与缓存或类似的东西有关。

我首先注意到这可能与UNION ALL某种操作有关。我记得当我使用*而不是指定单个列时遇到问题,即使viewA并且viewB具有完全相同的架构。viewC当我运行这个时,即是空的:

SELECT *
FROM dbo.viewA

UNION ALL

SELECT *
FROM dbo.viewB

SELECT如果我手动单独的表,然后viewAviewB最后ViewC分别,该视图似乎再次起作用。很奇怪!

我可以尝试任何表格提示或视图提示吗?有谁知道这个“错误”可能与什么有关?

标签: sql-serverazure-sql-database

解决方案


此问题可能是由于表结构的更改。

您可以使用sp_refreshview系统存储过程来刷新视图。

exec sp_refreshview 'schema.view_name'

推荐阅读