SSMS 2016,可用性组,数据库加密错误

Ete*_*num 7 sql-server availability-groups sql-server-2016

在评估将托管 AG 的 SQL Server 2012 实例滚动升级到 SQL Server 2016 的可能性时,我们遇到了一个不太合理的奇怪问题。一种更简单的演示方法如下:

假设您想将数据库添加到 AG(正在使用 2012 实例)。SSMS 2012 或 SSMS 2014 向导显示不出意外:

在此处输入图片说明

然而,SSMS 2016 讲述了完全不同的故事:

在此处输入图片说明

对于已经是 AG 一部分的数据库,它说“不满足先决条件”而不是“已经是……”,对于那些不在 AG 中的数据库,它说“需要密码”,并附有以下解释:

“此数据库由数据库主密钥加密,您需要在将其添加到可用性组时提供有效密码。”

此消息的问题在于没有任何数据库使用任何加密。

如果您从 2016 实例上的 2012 AG 备份还原数据库并尝试使用 SSMS 2016 向导将其添加到 2016 AG,则会出现同样的问题。

Sea*_*ser 9

此消息的问题在于没有任何数据库使用任何加密。

这可能是真的:)但是,这不是错误所说的......

“此数据库由数据库主密钥加密,您需要在将其添加到可用性组时提供有效密码。”

错误是用简单的英语说:你有一个数据库,里面有一个数据库主密钥。该数据库主密钥使用密码加密。我需要你给我那个密码,以便我可以解密任何可能使用它加密的对象。

这是一个超级快速的复制,可以给你“消息”:

CREATE DATABASE PasswordTest;
GO

USE PasswordTest;
GO

CREATE MASTER KEY ENCRYPTION BY PASSWORD = ‘$up3r$tr0ng’
GO
Run Code Online (Sandbox Code Playgroud)

SMSS 并不是说​​它不能使用数据库,而是要求提供打开主密钥的密码。

有什么解决办法?

您有几个选择,但这里是最好的两个:

  1. 单击消息右侧的 ,您实际上可以输入密码,向导将让您继续操作(因为它现在可以打开主密钥)。
  2. 如果您不使用主密钥...放弃它

原来数据库确实有主密钥。

是的,正如指定的错误。这是毫无疑问的:)

我最初问题中的屏幕截图来自同一个 2012 年的实例。为什么 SSMS 2012 和 2014 向导没有提到有关主密钥的任何内容,而 SSMS 2016 向导却提到了?

它是在 SSMS 2016 中添加的...不确定您在此处寻找的是什么,因为项目已添加到新版本中。

而且 SSMS 2016 没有任何编辑框来输入密码。

我不知道 - 在我的工作...

在此处输入图片说明

我确切地知道您指的是什么,但在我的情况下没有任何内容,只有“密码”列下的空白空间,这增加了混乱。您认为 SSMS 2016 中可能存在错误,或者您对此行为有一些解释吗?

请参阅上面的屏幕截图 - 我认为它按预期工作,至少对我而言......它可能不直观,但它有效。

最终结果是一样的。如果您不喜欢 GUI 会给您带来悲伤,那么总有 PowerShell 和 T-SQL :) 如果您觉得这没有按预期工作或您不喜欢它,我会请您发帖对 Connect 的反馈