SQL Server 2022中创建TDE数据库加密密钥时RSA_4096语法错误如何解决?
解决SQL Server 2022 TDE中RSA_4096语法错误问题
你的问题出在对TDE加密层级的理解偏差:数据库加密密钥(DEK)本身不使用RSA算法,RSA_4096是用来创建保护DEK的非对称密钥的算法。CREATE DATABASE ENCRYPTION KEY语句中只能指定DEK自身的对称加密算法(如AES_256、AES_192等),而非RSA系列。
正确的操作步骤及脚本
1. 在master数据库中创建RSA_4096非对称密钥
非对称密钥必须存储在master库中,用于后续加密DEK:
USE master; GO -- 创建RSA_4096非对称密钥(需CONTROL SERVER权限) CREATE ASYMMETRIC KEY TDE_AsymKey_RSA4096 WITH ALGORITHM = RSA_4096 ENCRYPTION BY PASSWORD = '你的强密码'; -- 替换为实际安全密码 GO
2. 切换到目标库,用上述非对称密钥创建DEK
DEK使用对称加密算法(SQL Server 2022推荐AES_256),并指定由刚创建的非对称密钥加密:
USE AdventureWorks2019; GO -- 创建数据库加密密钥,使用AES_256算法,由master库的非对称密钥保护 CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER ASYMMETRIC KEY TDE_AsymKey_RSA4096; GO
3. 启用透明数据加密(TDE)
ALTER DATABASE AdventureWorks2019 SET ENCRYPTION ON; GO
关键注意事项
- 操作需要
CONTROL SERVER或ALTER ANY ASYMMETRIC KEY等权限,确保执行账户拥有足够权限。 - 非对称密钥必须存储在master库,不能在用户库中创建用于TDE保护的非对称密钥。
- 后续需备份master库中的非对称密钥,否则数据库恢复时会无法解密。
内容的提问来源于stack exchange,提问作者Helloit'sme
相关产品推荐
相关产品推荐

