2008-09-29 59 views
7

我有一个现有的SQL Server 2005数据库,其中包含使用对称密钥加密的数据。对称密钥使用密码打开。我正在升级到使用此数据库的前端应用程序,其中包括添加数十个新表,存储过程,UDF等,以及对现有表和数据库对象的几十个修改。为此,我制作了现有开发数据库的副本,以便在新开发发生时独立支持,维护和更新当前系统。如何在SQL Server 2005数据库之间传输sql加密数据?

什么是复制数据库的好方法?通常,我会对现有数据库进行备份,然后将其还原到新数据库。但是,鉴于加密数据,这是否可行?我是否仍然可以使用现有的对称密钥和密码对新数据库中的数据进行加密和更重要的解密?

我反而想用DTS来传输现有的模式。在新数据库中创建一个新的对称密钥/密码。然后编写临时查询来传输数据,使用现有密钥/密码进行解密,并在新数据库中使用新密钥/密码进行加密。

我想这个的核心是对称密钥是否适用于加密/解密单个数据库或同一服务器上的许多数据库中的数据?

回答

3

您所指的对称密钥是数据库主密钥(DMK)。它们保留在数据库级别,因此备份/恢复到另一台SQL服务器应该可以正常工作(不同服务帐户的注意事项,这thread暗示)

在您做任何事之前,请确保您有备份你的钥匙(想必你已经这样做了):

USE myDB 
GO 
BACKUP MASTER KEY TO FILE = 'path_to_file' 
    ENCRYPTION BY PASSWORD = 'password' 
GO 

从这个article

当你创建一个数据库主密钥, 副本与所提供的 加密密码并保存在当前的 数据库中。使用服务主密钥还将副本 加密并将 存储在主数据库中。 的副本DMK允许服务器自动解密DMK, 功能被称为“自动密钥 管理”。如果没有自动密钥管理 ,你必须使用OPEN MASTER KEY语句和每一个你希望的时间提供一个 密码 加密和/或解密使用 证书和密钥依赖于 DMK安全数据。使用自动密钥 管理,开放主密钥 声明和密码不是 必需的。

+0

感谢米奇,非常有用。是的,备份到新数据库的恢复工作。我能够解密以前在旧数据库中加密的新数据库中的数据。 – Jon 2008-09-30 12:22:42

相关问题