SQL 2016 无法创建列主键

SQL2016 Not able to create Column Master Key

我刚刚安装了 SQL 2016 标准版,因为我想使用 'Always Encrypted' 功能。 但是,当我尝试在安全 -> 始终加密的密钥 -> 列主密钥下创建列主密钥时,出现以下错误:

产品版本:13.0.160.5,productlevel:RTM,edition:Standard 版本 64 位 有任何想法吗?谢谢!

这个问题可能是由恢复 SQL2014 数据库引起的。我备份了一个 2014 年的数据库,然后在 2016 年恢复了它。SQL 可能将其视为 2014 年的架构,因此抱怨不支持列主密钥。 我是如何解决的:在 SSMS 2016 中,为导入的数据库生成 .sql 脚本(在高级设置中,选择 SQL 2016 脚本) 安装一个新的 SQL 2016 实例(可能没有必要进行测试)和 运行 生成的 .sql,而不是恢复选项

我遇到了同样的问题。我通过从 Sql Server 2016 更新到 Sql Server 2016 SP1 来修复它。

之前 @@version 是:

  • Microsoft SQL Server 2016 (RTM-GDR) (KB3194716) - 13.0.1722.0 (X64) 2016 年 9 月 26 日 13:17:23 版权所有 (c) Windows 10 Pro 6.3(内部版本 14393:)
  • 上的 Microsoft Corporation 标准版(64 位)

现在 @@version 是:

  • Microsoft SQL Server 2016 (SP1) (KB3182545) - 13.0.4001.0 (X64) 2016 年 10 月 28 日 18:17:30 Windows 10 Pro 6.3(内部版本 14393:)
  • 上的 Microsoft Corporation Standard Edition(64 位)版权所有 (c)

另请注意,我的 SSMS 完全是最新的。

  • 工具 > 检查更新 > 详细信息 - 13.0.16100.1
  • 一位同事的 SSMS 版本稍旧,甚至没有看到加密列的选项。

"Always Encrypted is available in SQL Server 2016 (13.x) and SQL Database. (Prior to SQL Server 2016 (13.x) SP1, Always Encrypted was limited to the Enterprise Edition.)"

来源:https://docs.microsoft.com/en-us/sql/relational-databases/security/encryption/always-encrypted-database-engine?view=sql-server-2017