如何在SQL Server 2005数据库之间传输sql加密数据?

Jon*_*Jon 7 encryption sql-server-2005

我有一个现有的SQL Server 2005数据库,其中包含使用对称密钥加密的数据.使用密码打开对称密钥.我正在升级到使用此数据库的前端应用程序,其中包括添加许多新表,存储过程,UDF等,以及对现有表和数据库对象的许多修改.为此,我正在制作现有开发数据库的副本,以便在进行新开发时可以独立支持,维护和更新当前系统.

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

我可能想要使用DTS仅传输现有架构.在新数据库中创建新的对称密钥/密码.然后编写即席查询以传输数据,使用现有密钥/密码进行解密,并使用新数据库中的新密钥/密码进行加密.

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

Mit*_*eat 3

您所指的对称密钥是数据库主密钥 (DMK)。它们保存在数据库级别,因此备份/恢复到另一个 SQL 服务器应该可以正常工作(需要注意此线程提到的不同服务帐户)

在执行任何操作之前,请确保您已备份密钥(假设您已经完成了此操作):

USE myDB
GO
BACKUP MASTER KEY TO FILE = 'path_to_file'
    ENCRYPTION BY PASSWORD = 'password'
GO
Run Code Online (Sandbox Code Playgroud)

从这篇文章

创建数据库主密钥时,将使用提供的密码对副本进行加密并存储在当前数据库中。副本还使用服务主密钥加密并存储在主数据库中。DMK 的副本允许服务器自动解密 DMK,这一功能称为“自动密钥管理”。如果没有自动密钥管理,您必须使用 OPEN MASTER KEY 语句,并在每次希望使用依赖于 DMK 的安全性的证书和密钥来加密和/或解密数据时提供密码。通过自动密钥管理,不需要 OPEN MASTER KEY 语句和密码。