如果我无法访问数据库服务器,如何将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
我唯一能想到的就是:
- 在本地恢复备份
- 使用CREATE
和INSERT
语句生成脚本
- 在新创建的数据库上运行脚本
但我有以下问题:
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作为新的主机服务器)。