很像“Use SQL Certificate from another database”中的问题,但这一次,我正在将数据库移动到另一台服务器。如何移动必要的证书,以保证相同的代码仍然有效?
EncryptByCert(Cert_ID('CertifiacteName'), 'SecretData')
答案 0 :(得分:1)
实际上您的证书在数据库备份中。
此外 - 大多数情况下您的证书都是由数据库主密钥加密的。所以你需要的是让你的数据库主密钥(DMK)在目标实例上工作。
默认情况下,DMK受密码和服务主密钥(SMK)保护。默认情况下,密钥会自动打开。这意味着,如果您有权使用证书,则在您需要时自动解密。
在新实例中,您的SMK不同,它不会自动发生。但您可以通过密码打开DMK。所以你需要的 - 移动你的数据库,打开主密钥,改变它,使它被新的服务器SMK msdn加密。
您需要在新实例上执行的操作:
OPEN MASTER KEY DECRYPTION BY PASSWORD = 'your password (from previous instance)'
ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY