database - Visual Studio 中的 DB 项目中的 DB 视图在同一项目中看不到同义词
问题描述
我们的网络应用程序使用 4 个数据库,都在同一台服务器上。
这些数据库的 SQL 存储在我们解决方案中的 4 个项目中。
我在另一个数据库中使用的一个数据库中有一个视图。
这两个数据库都具有视图的同义词,具有相同的名称。从数据库的角度来看,这是完全合理的。
[database_1].dbo.Syn_AAAAAA 和 [database_2].dbo.Syn_AAAAAA 都指向 [database_3].dbo.vw_AAAAAA。
从 sql server 的角度来看,这是完全合理的。
应用程序工作正常。数据库很高兴。
Database1 在存储过程中使用了[synonym ==> view],一切都很好。当代码在 db 项目中时,也可以。
在 database2 PROJECT 中,我在另一个视图中引用了 [synonym ==> view]。当然,在数据库中工作正常。
但是在项目中,使用同义词的观点令人窒息。就好像它正在看到该名称的所有同义词,即使是那些超出其范围的同义词,也就是它所在的数据库。
select y.columnA, y.columnB, y.columnC, _l.columnD_, d3.columnE, d3.columnF
from dbo.TableD d3
inner join (subquery) y
on y.columnA = d3.columnA
left join _dbo.syn_AAAAAA_ l
on _l.columnC_ = d3.columnC
(下划线表示来自 IntelliSense 的错误位置。)
如果我可以在服务器上编写合格的 SQL 代码,为什么我必须与 Visual Studio 争夺将其存储在项目中?
SQL71501:视图:[dbo].[vw_AAAAAA] 包含对对象的未解析引用。对象不存在或引用不明确,因为它可能引用以下任何对象:[$(ThisDB)].[dbo].[Syn_BBBBBB].[l]::[ColumnName], [$(ThisDB )].[dbo].[Syn_BBBBBB].[ColumnName] 或 [dbo].[Table].[l]::[ColumnName]。
SQL71561:视图:[dbo].[vw_AAAAAA] 对对象 [$(ThisDB)].[dbo].[Syn_BBBBBB] 有未解析的引用
解决方案
问题在于SYNONYM。
为 [ DBName ].[dbo].[vw_xxxx]创建同义词 [dbo] .[syn_xxxx]
不得不将其更改为
为[$(DBNameVariable)] .[dbo].[vw_xxxx]创建同义词 [dbo] .[syn_xxxx]
大多数时候 [DBName] 工作,但在这种情况下,我不得不使用 [$(DBNameVariable)]。
右键单击您的数据库引用,查看您尝试引用的数据库,看看是否有一个变量。(我没有设置这个,所以这有点超出我的经验。)我的最后一个职位,我们没有在我们的代码解决方案中保留 SQL 项目。
推荐阅读
- r - 如何修复具有混合字符的数据框中的日期
- php - 如何修复不显示列表的自定义分类中所有术语的 Wordpress 下拉菜单?
- ios - iOS 13 beta UITableViewCell 子视图触摸选择表格视图单元格
- c# - 如何在 EF 已返回给定模型后为其加载更多数据
- elixir - 如何在 Elixir 中指定具有可变数量参数的回调
- github - 将特定分支从 bitbucket 存储库移动到 Github 或将 Bitbucket 存储库移动到 Github 而没有提交历史记录
- javascript - 事件:“使用了不推荐使用的符号,请查阅文档以获得更好的选择”
- mongodb - 无服务器是否支持 AWS DocumentDB?
- css - 选择 A 类中所有在 B 类元素之前的元素
- node.js - 我们的应用程序是 2 层还是 3 层架构?