【问题标题】:Using CHANGETABLE() in SSDT Visual Studio 2019 results in unresolved reference to object在 SSDT Visual Studio 2019 中使用 CHANGETABLE() 会导致对对象的引用无法解析
【发布时间】: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


【解决方案1】:

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

  1. 确保您在项目中引用了 master。在项目下右键引用并添加系统主控。

  2. 我对数据库和项目的架构进行了比较,发现我的表缺少 'ALTER TABLE [dbo].[History_Table] ENABLE CHANGE_TRACKING'

我希望这些对你有帮助。

【讨论】:

  • 感谢您的回答,抱歉回复晚了。不幸的是,这也无济于事。我已经将主数据库添加为数据库引用,并且启用更改跟踪的表位于另一个引用的数据库中,我们只有一个 DACPAC。所以我们无法在那里进行任何更改。现在我决定通过在项目属性中排除它来忽略这个特定的警告号。
【解决方案2】:

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

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

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

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

<ArtifactReference Include="$(DacPacRootPath)\Extensions\Microsoft\SQLDB\Extensions\SqlServer\120\SqlSchemas\master.dacpac">
  <HintPath>
    $(DacPacRootPath)\Extensions\Microsoft\SQLDB\Extensions\SqlServer\120\SqlSchemas\master.dacpac
  </HintPath>
  <SuppressMissingDependenciesErrors>
    False
  </SuppressMissingDependenciesErrors>
  <DatabaseVariableLiteralValue>
    master
  </DatabaseVariableLiteralValue>
</ArtifactReference>

谢谢

【讨论】:

  • 不幸的是,我的 SQL 项目和主数据库引用都设置为 SQL Server 2016 (130)。所以这也不能解决问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-08
  • 1970-01-01
  • 2017-10-21
  • 1970-01-01
  • 1970-01-01
  • 2021-05-26
  • 1970-01-01
相关资源
最近更新 更多