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,则会出现同样的问题。
此消息的问题在于没有任何数据库使用任何加密。
这可能是真的:)但是,这不是错误所说的......
“此数据库由数据库主密钥加密,您需要在将其添加到可用性组时提供有效密码。”
错误是用简单的英语说:你有一个数据库,里面有一个数据库主密钥。该数据库主密钥使用密码加密。我需要你给我那个密码,以便我可以解密任何可能使用它加密的对象。
这是一个超级快速的复制,可以给你“消息”:
CREATE DATABASE PasswordTest;
GO
USE PasswordTest;
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = ‘$up3r$tr0ng’
GO
Run Code Online (Sandbox Code Playgroud)
SMSS 并不是说它不能使用数据库,而是要求提供打开主密钥的密码。
您有几个选择,但这里是最好的两个:
原来数据库确实有主密钥。
是的,正如指定的错误。这是毫无疑问的:)
我最初问题中的屏幕截图来自同一个 2012 年的实例。为什么 SSMS 2012 和 2014 向导没有提到有关主密钥的任何内容,而 SSMS 2016 向导却提到了?
它是在 SSMS 2016 中添加的...不确定您在此处寻找的是什么,因为项目已添加到新版本中。
而且 SSMS 2016 没有任何编辑框来输入密码。
我不知道 - 在我的工作...
我确切地知道您指的是什么,但在我的情况下没有任何内容,只有“密码”列下的空白空间,这增加了混乱。您认为 SSMS 2016 中可能存在错误,或者您对此行为有一些解释吗?
请参阅上面的屏幕截图 - 我认为它按预期工作,至少对我而言......它可能不直观,但它有效。
最终结果是一样的。如果您不喜欢 GUI 会给您带来悲伤,那么总有 PowerShell 和 T-SQL :) 如果您觉得这没有按预期工作或您不喜欢它,我会请您发帖对 Connect 的反馈。