当我尝试构建我的项目时,遇到未解决的引用错误,因为我的项目包含引用同一服务器上的另一个数据库的视图。
当我尝试添加数据库引用时,我被迫在当前解决方案中选择数据层应用程序(.dacpac)、系统数据库或数据库项目。
为什么我不能使用这些选项:
系统数据库不起作用→外部数据库是用户数据库,而不是 master、msdb、model 或 tempdb,因此此选项无效。
我不想将数据库添加到解决方案中→该数据库是单独管理的,将其包含在 repo 中意味着维护整个不需要的额外项目。
.dacpac 不实用 → 引用的数据库经常变化,并且保持 AzDO 存储库中的 .dacpac 更新需要不断手动更新。
我知道的唯一方法是包含另一个数据库的 dacpac。如果它经常更改,您可能可以在构建后设置一些东西来自动将其复制到您正在工作的数据库项目中,但除非您引用的对象经常更改,否则您实际上只需要在引用的对象更改时更新该文件。在许多情况下,引用的核心对象可能非常静态,因此您可以在需要时或发生更改时提取最新的 dacpac。
您必须有引用。系统数据库肯定不起作用,因此您应该使用另一个项目或 dacpac 作为引用。当您引用项目中的对象时,您就会知道所有需要的对象和/或列。只需创建虚拟项目并添加您在项目中使用的唯一对象即可解决所有引用问题。但是,正如您提到您已经在视图中使用它们,我假设您在那里使用了 3 或 4 个部分的名称。它在 SSDT 中不起作用。我建议为您正在使用的所有外部对象创建同义词并使用它们。同义词支持 3/4 部分名称引用。