0

很像“使用另一个数据库中的 SQL 证书”中的问题,但是这一次,我将数据库移动到另一个服务器。如何移动必要的证书,以保证相同的代码仍然有效?

EncryptByCert(Cert_ID('CertifiacteName'), 'SecretData')
4

1 回答 1

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
于 2012-10-25T11:49:47.577 回答