sql-server - 即使基础表中存在数据,SQL Server 视图也是空的
问题描述
我正在运行 Azure SQL Server,但我遇到了与视图相关的问题。我有一个基于其他两个视图的视图(我将其称为viewC
)UNION ALL
,即
SELECT ColA
,ColB
FROM dbo.viewA
UNION ALL
SELECT ColA
,ColB
FROM dbo.viewB
如果我截断底层viewA
和viewB
视图中的所有表,并重新导入这些截断表中的数据,有时viewC
如果SELECT
从中仍然为空。这种行为很奇怪,我想知道它是否与缓存或类似的东西有关。
我首先注意到这可能与UNION ALL
某种操作有关。我记得当我使用*
而不是指定单个列时遇到问题,即使viewA
并且viewB
具有完全相同的架构。viewC
当我运行这个时,即是空的:
SELECT *
FROM dbo.viewA
UNION ALL
SELECT *
FROM dbo.viewB
SELECT
如果我手动单独的表,然后viewA
和viewB
最后ViewC
分别,该视图似乎再次起作用。很奇怪!
我可以尝试任何表格提示或视图提示吗?有谁知道这个“错误”可能与什么有关?
解决方案
此问题可能是由于表结构的更改。
您可以使用sp_refreshview
系统存储过程来刷新视图。
exec sp_refreshview 'schema.view_name'
推荐阅读
- css - 带有渐变的滚动导航栏
- haskell - 文件.BMP:分析和转换
- java - 在 Java 中调用被覆盖的方法
- angular - 如何使用 rxjs 将 json 响应从一种对象类型映射到另一种对象类型
- postgresql - 如何从 Go 中的 Cloud Function 连接到 Cloud-SQL?
- c# - 我在哪里可以获得 iCalendar 规范 RFC 2445 版本 2.0 的 xml/xsd 架构?
- r - 如何创建一个函数,如果 R 版本早于 3.5,它会发出警告?
- azure-devops - 在自托管 Azure DevOps 代理上运行维护
- lotus-notes - 每次进行更改时,视图都会显示所有列表更新表单
- html - 如何使用来自同一字典的数据创建具有多列的表?