【问题标题】:SQL71501: column [dbo].[columnname] has an unresolved reference to column encryption key [keyname]SQL71501:列 [dbo].[columnname] 对列加密密钥 [keyname] 的引用未解析
【发布时间】:2019-03-23 18:53:59
【问题描述】:

我有一个 SQL 表,其中有一列始终使用加密。我正在尝试为 Visual Studio 数据库项目设置 CI / CD 管道。 我无法构建项目,因为 VS2017 无法识别此特定列

[ColumnName] [varchar](max) COLLATE Latin1_General_BIN2 ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEKKeyname], ENCRYPTION_TYPE = Deterministic, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL

下面是编译错误

Severity    Code    Description Project File    Line    Suppression State
Error       SQL71501: Column: [dbo].[mytable].[ColumnName] has an unresolved reference to Column Encryption Key [CEKKeyname].

我已经尝试过这里提到的解决方案 unresolved reference to object [INFORMATION_SCHEMA].[TABLES] 和其他类似的解决方案也没有任何结果。

我使用的是 VS2017 企业版,SSDT 15.1.61808,Azure SQL 数据库

关于如何解决这个问题的任何指示?

【问题讨论】:

  • 能否更新 SSDT docs.microsoft.com/en-us/sql/ssdt/…? VS2017更新了吗?
  • @AlbertoMorillo - 我确实通过 Visual Studio 以及独立安装程序更新了 SSDT。似乎没有任何效果
  • 项目中是否添加了列加密(CEKKeyname)?
  • @DmitrijKultasev - 我们没有尝试故意将密钥添加到项目中,因为我们不想将该信息暴露给所有开发人员。我想在某个时候在本地尝试一下,看看它是否有助于克服这个错误。再次感谢
  • @user6163763 这不是 SSDT 的工作方式。所有引用的对象都必须在项目中。您可能希望通过 post/pre 脚本创建它,或者在部署时使用一些逻辑来替换此密钥

标签: visual-studio-2017 azure-sql-database database-schema sql-server-data-tools always-encrypted


【解决方案1】:

此问题的正确解决方案是按照上面@DmitrijKultasev 的建议将引用的项目添加到项目中。

【讨论】:

    【解决方案2】:

    我通过 VisualStudio UI 遇到了同样的问题 - 我在 UI 中更改了表名,但它没有更改代码。右击表视图代码并更改表名

    【讨论】:

      【解决方案3】:

      就我而言,关闭 VS2017 并重新打开解决方案再次解决了问题。

      【讨论】:

        猜你喜欢
        • 2019-09-08
        • 2014-04-24
        • 2019-04-18
        • 2019-01-14
        • 1970-01-01
        • 1970-01-01
        • 2013-05-15
        • 2021-01-24
        • 1970-01-01
        相关资源
        最近更新 更多