问题描述
我们有一个 sql 2019 数据库,其中所有表名在以数据库名称开头的视图中都是完全限定的。我们没有选择避免完全限定的引用,因为视图定义是自动生成的(否则我不会完全限定它们)。当通过引用与视图相同的数据库中的表来定义视图时,SSDT 项目会抱怨它有一个未解析的引用。
Visual Studio 不允许向自身添加数据库引用。我可以让它编译的唯一方法是创建同一数据库的 DACPAC,然后将其添加为引用并删除数据库变量 ($Name)。
是否有其他方法可以在视图中提供完全限定的表名而无需在 SSDT 项目中创建 DACPAC?
解决方法
我所知道的唯一方法是将视图代码从项目中取出并在部署后脚本中处理。这是设计使然,因为数据库名称可能不是原始代码中定义的名称。
,您不能在 SSDT 中正常使用 3-4 部分命名。您可以通过在代码中使用变量来解决此问题。因此,假设您有 [localhost].[reports].[dbo].[your_table]
,您需要使用 [$(ReportServer)].[$(ReportDatabase)].[dbo].[your_table]
。