【发布时间】:2021-06-17 08:29:20
【问题描述】:
我正在将一堆现有数据库迁移到 Visual Studio 项目,以便将其置于源代码管理中。不幸的是,有 1 个存储过程使用启用了更改跟踪的表。它包含对以下嵌套选择语句的左连接:
(select distinct ch.batch_number from CHANGETABLE(CHANGES dbName.dbo.batchTable, 0) as ch)
这会给出以下警告:
SQL71562:过程:[dbo].[stMergeBatchInfo] 包含对对象的未解析引用。对象不存在或引用不明确,因为它可能引用以下任何对象:[CT].[batch_number] 或 [CT].[ch]::[batch_number]。
表示 ch.batch_number 列未知。看来,当使用 CHANGETABLE 函数时,项目不知道列定义。正在读取的表是通过 DACPAC 文件引用的,并且可以很好地用于标准 SELECT 语句中。 有谁知道是否有办法摆脱这些构建警告?目标 SQL 服务器是 2016。顺便说一下,数据库和表名是虚拟名称。
【问题讨论】:
-
dbName是当前数据库名称吗?如果是这样,请尝试将其删除。 -
不,dbName 指的是 DACPAC 参考中的数据库。
-
那么您可能想要删除数据库引用,因为数据库名称可能会根据您的部署方式而改变。
-
不确定我是否理解这一点。给出了数据库名称,在所有环境中都相同。由于它是对另一个数据库中的对象的引用,而不是当前项目中的对象,因此我需要输入数据库引用。顺便说一下,dbName 和 batchTable 是虚拟名称)。
标签: sql-server visual-studio-2019 sql-server-2016 sql-server-data-tools change-tracking