症状
假设你有 Microsoft SQL Server 2016 或早期版本的 SQL Server 数据库,该数据库包含使用对称密钥加密加密的数据或对象。 在这种情况下,如果满足以下条件,则可能无法使用 Windows 上 SQL Server 2017 中的相同对称密钥解密数据或对象:
-
数据库将还原到 SQL Server 2017。
-
将丢弃现有的对称密钥,并创建相同的对称密钥。
注意 如果不会在 SQL Server 2017 中删除或重新创建早期版本的 SQL Server 的对称密钥,则不会发生此问题。
原因
出现此问题的原因是 SQL Server 2017 使用 SHA2 哈希算法对密码进行哈希处理。 SQL Server 2016 和早期版本的 SQL Server 使用不被视为安全的 SHA1 算法。
解决方案
在 SQL Server 的以下累积更新中修复了此问题:
注意 此修补程序需要在安装累积更新后启用 T争用标志(TF) 4631 。可通过使用 SQL Server 启动选项或使用 DBCC TRACEON 启用此跟踪标志。 在 TF 4631 已启用后,必须创建对称密钥。
SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。
参考
了解 Microsoft 用于描述软件更新的 术语。