将数据库从一台服务器移动到另一台服务器后,我们开始遇到一个问题:
> Msg 15581, Level 16, State 7, Procedure xxxxx, Line 24 [Batch Start Line 2]
Please create a master key in the database or open the master key in the session before performing this operation.
Msg 15315, Level 16, State 1, Procedure xxxxx, Line 62 [Batch Start Line 2]
The key '<CustomKeyName>' is not open. Please open the key before using it.
所讨论的程序具有:
OPEN SYMMETRIC KEY MySymKey
DECRYPTION BY CERTIFICATE MySymCert;
我可以验证移动数据库后,我可以通过查询和来看到asymmetric key
和a 。
certificate
sys.symmetric_keys
sys.certificates
是的,我们没有主密钥。我很好奇这个过程是否可行:
- 在旧服务器中(在数据库范围内):
ALTER MASTER KEY REGENERATE WITH ENCRYPTION BY PASSWORD = 'a_cool_pass';
再次备份数据库
在新服务器中再次恢复数据库(使用替换)
OPEN MASTER KEY DECRYPTION BY PASSWORD = 'the_cool_Pass'
ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY
这是解决此情况的适当方法吗?
或者,我可以删除 symetric_key 和 cert,然后重新创建吗?
编辑:REGENERATING
将主密钥传递到旧服务器,备份/恢复到新服务器, OPEN MASTER KEY DECRYPTION BY PASSWORD =
遇到了问题The key is not encrypted using the specified decryptor.
(我认为这很奇怪。我明天会再试一次。
(我需要对证书进行备份恢复吗?