使用证书和加密存储过程将DB从一个主机服务器移动到另一个主机服

时间:2015-04-07 18:28:00

标签: sql-server encryption certificate database-backups

如果我无法访问数据库服务器,如何将sql数据库(sql server 2008 r2)从一个主机服务器移动到另一个主机服务器,这样我就无法使用Restore中的*.bak(这似乎是唯一的方法)加载数据是使用生成脚本,但下面描述了我遇到的问题)

a)db具有证书和对称密钥     CREATE CERTIFICATE PasswordFieldCertificate        密码加密=' MyPass'        WITH SUBJECT ='我的数据库证书'     GO

CREATE SYMMETRIC KEY PasswordFieldSymmetricKey WITH ALGORITHM = AES_256
    ENCRYPTION BY CERTIFICATE PasswordFieldCertificate;
GO
b)db已经使用解密工具加密了存储过程,我得到了以下代码:

CREATE PROCEDURE [dbo].[Get_Encryption_key] WITH ENCRYPTION
AS
Begin
OPEN SYMMETRIC KEY PasswordFieldSymmetricKey DECRYPTION BY CERTIFICATE PasswordFieldCertificate with PASSWORD='MyPass';   
END 

我唯一能想到的就是: - 在本地恢复备份 - 使用CREATEINSERT语句生成脚本 - 在新创建的数据库上运行脚本 但我有以下问题:

a)此方法不提供有关证书和密钥的任何信息。我应该以某种方式在新数据库上自己创建它们吗?如何正确地执行此操作,以便我具有与以前完全相同的算法,并且可以像以前一样在旧服务器上正确加密/解密所有数据。

b)这不允许为加密的存储过程生成脚本,对吧?我应该自己运行吗?

c)当生成INSERT脚本时(使用Task -> Generate Script),结果包含非常奇怪的符号,这些符号无法插入。例如,一个insert语句是这样的:

-- this code is generated but when run it shows Incorrect syntax
INSERT [dbo].[Person] (... [EmailAddress]) VALUES (N'紀눬묮䣹疋ⴐǸ)

我甚至无法复制/粘贴它不会出现的完整代码。但是INSERT语句包含" hieroglyphs"。在运行脚本时,它会显示Incorrect syntax near '紀눬묮䣹疋ⴐǸ'.

P.S。 我不了解certificates/keys,这是我第一次处理它们。以前我总是只使用从*.bak文件恢复。不幸的是,现在我无法将备份上传到新的主机服务器(至少我不知道怎么做,我们使用GoDaddy作为新的主机服务器)。

0 个答案:

没有答案