在SSDT Visual Studio 2019中使用CHANGETABLE()会导致对对象的引用未解析



我正在将一堆现有数据库迁移到Visual Studio项目中,以便将其置于源代码管理中。不幸的是,有一个存储过程使用了一个启用了更改跟踪的表。它包含以下嵌套select语句的左联接:

(select distinct ch.batch_number from CHANGETABLE(CHANGES dbName.dbo.batchTable, 0) as ch)

这会发出以下警告:

SQL71562:过程:[dbo]。[stMergeBatchInfo]包含对对象的未解析引用。对象不存在或引用不明确,因为它可能引用以下任何对象:[CT]。[批次编号]或[CT]。[ch]::[批次编号]。

表示列ch.batch_number未知。当使用CHANGETABLE函数时,项目似乎不知道列定义。正在读取的表是通过DACPAC文件引用的,可以在标准SELECT语句中使用。有人知道是否有任何方法可以消除这些构建警告吗?目标SQL服务器是2016。顺便说一下,数据库和表的名称都是伪名称。

我遇到了类似的问题,实际上是来这里寻找答案的。有两件事可能有助于

  1. 确保您的项目中引用了master。在proj下右键单击references并添加system master。

  2. 我从数据库到项目进行了架构比较,发现我的表缺少"ALTER table[dbo]"。[History_Table]启用CHANGE_TRACKING'

我希望这两个都能帮到你。

我以前遇到过这种情况。在我的案例中,master数据库引用的版本与数据库项目的版本不匹配。

在我的sqlproj文件中,数据库的版本是2014(120(。

<DSP>
Microsoft.Data.Tools.Schema.Sql.Sql120DatabaseSchemaProvider
</DSP>

接下来,确保您的主数据库引用是相同的版本(120(。

<ArtifactReference Include="$(DacPacRootPath)ExtensionsMicrosoftSQLDBExtensionsSqlServer120SqlSchemasmaster.dacpac">
<HintPath>
$(DacPacRootPath)ExtensionsMicrosoftSQLDBExtensionsSqlServer120SqlSchemasmaster.dacpac
</HintPath>
<SuppressMissingDependenciesErrors>
False
</SuppressMissingDependenciesErrors>
<DatabaseVariableLiteralValue>
master
</DatabaseVariableLiteralValue>
</ArtifactReference>

感谢

相关内容

最新更新