这是一个有点这个问题通常是如何相反的asked--我用下面创建一个数据库主密钥,证书,对称密钥:恢复迁移后不需要解密数据的SQL服务主密钥?
下面是如何创建的证书/键(显然与真正的密码):
CREATE MASTER KEY ENCRYPTION
BY PASSWORD = '123456'
CREATE CERTIFICATE EncryptionCert
WITH SUBJECT = 'EncryptionCert'
CREATE SYMMETRIC KEY SymmetricKey
WITH ALGORITHM = AES_256
ENCRYPTION BY CERTIFICATE EncryptionCert;
我再加密使用该密钥的一些数据,备份的数据库,并将其恢复到不同的盒子。
我的期望是,我将无法解密数据,直到我首次将旧服务主密钥从旧服务器迁移出去,但实际上,在恢复后无需提供单个证书或密码即可立即执行此操作。
我推测这是因为我使用Amazon EC2图像来创建盒子,所以我假定从该图像创建的每个盒子都具有相同的服务主密钥。
试图迫使服务密钥改变,我跑:
alter service master key regenerate
两个箱子。
我开始使用新的数据库,新的密钥/证书等,而这次,当我将备份移动到新盒子时,我无法自动读取数据,但我必须先提供我创建的数据库主密钥的密码。一旦我做到了,我就能够获得数据。
从我读过的所有内容来看,如果不先移动服务主密钥,我将无法解密主密钥。
我担心不需要的服务主密钥仍然是由于我的测试环境的一个奇怪的问题,并且我可能会在一年内搞砸,因为我真的试图这样做。
任何人都可以阐明这里发生的事情吗? SQL中有什么更改使得不需要移动服务主密钥,或者是否创建数据库主密钥的方式使其不必要?或者我收回可能的虚假结果?
http://dba.stackexchange.com/可能是一个更好的地方要问这个问题。 –
谢谢,它也复制在那里。 – user1279779