在SQL Server 2008中执行透明数据加密
2008-09-27 10:05:31 来源:WEB开发网在另一个SQL Server实例上恢复加密数据库备份
很容易恢复一个未加密的备份到另一个SQL Server实例上。事实上,这就是为什么它易受威胁的原因。你可以尝试恢复加密的数据库备份为Northwind_encrypted,而你将遇到一个错误。我在我的TEST实例上进行了尝试。这个错误信息告诉你服务器证书找不到。尽管这个恢复失败了,但是你仍然可以在对象浏览器中看到Northwind_encrypted数据库处于正在恢复状态。
为了在另一个SQL Server实例上恢复加密的数据库备份,首先我们需要导出我们在这个创建了加密数据库备份的实例上创建的证书。为了将这个证书导出到一个文件中,我将连接到我的default实例并运行这个查询。
USEmaster
GO
BACKUPCERTIFICATENorthwindCert
TOFILE='C:NorthwindCert_File.cer'
WITHPRIVATEKEY(FILE='C:NorthwindCert_Key.pvk',
ENCRYPTIONBYPASSWORD='mY_P@$$w0rd')
GO
然后,我们将需要复制这个证书和私钥文件到另一个SQL Server实例上。因为我在同一个服务器上运行我的default和我的TEST实例,所以我在做这个导入操作时将直接指向这些文件。现在,在TEST实例上,首先创建一个主钥来导入这个证书。
USEmaster
GO
CREATEMASTERKEYENCRYPTIONBYPASSWORD='EnKrYpt3d_P@$$w0rd'
GO
这里提供的密码与你在default实例中用到的密码是不同的,因为你将为这个实例创建一个新的主钥。在创建了一个主钥之后,你可以通过导入我们之前创建的证书来创建一个证书。
CREATECERTIFICATENorthwindCert
FROMFILE='C:NorthwindCert_File.cer'
WITHPRIVATEKEY(FILE='C:NorthwindCert_Key.pvk',
DECRYPTIONBYPASSWORD='mY_P@$$w0rd');
GO
注意,这里在DECRYPTION BY PASSWORD参数中指定的密码是和我们在导出这个证书到一个文件中所使用的一样。这是因为我们将在这个新实例上使用同一个证书来访问加密的数据库。在证书创建之后,我们可以在这个实例上恢复加密数据库备份。你可能想删除最初你在操作之前试图恢复的加密数据库。你现在可以成功地恢复加密数据库备份了。
更多精彩
赞助商链接