将加密列移动到其他服务器

时间:2012-10-25 09:21:08

标签: encryption sql-server-2008-r2 certificate

很像“Use SQL Certificate from another database”中的问题,但这一次,我正在将数据库移动到另一台服务器。如何移动必要的证书,以保证相同的代码仍然有效?

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

1 个答案:

答案 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