很像“使用另一个数据库中的 SQL 证书”中的问题,但是这一次,我将数据库移动到另一个服务器。如何移动必要的证书,以保证相同的代码仍然有效?
EncryptByCert(Cert_ID('CertifiacteName'), 'SecretData')
很像“使用另一个数据库中的 SQL 证书”中的问题,但是这一次,我将数据库移动到另一个服务器。如何移动必要的证书,以保证相同的代码仍然有效?
EncryptByCert(Cert_ID('CertifiacteName'), 'SecretData')
实际上,您的证书在您的数据库备份中。
此外,您的证书很可能是由数据库主密钥加密的。因此,您需要让您的数据库主密钥 (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