Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何复制SQL Server对称密钥?_Sql_Sql Server 2008_Symmetric Key - Fatal编程技术网

如何复制SQL Server对称密钥?

如何复制SQL Server对称密钥?,sql,sql-server-2008,symmetric-key,Sql,Sql Server 2008,Symmetric Key,我们有一个服务器,其数据库具有对称密钥(数据库->安全->对称密钥)。我们有一个备份副本数据库,我们正在使用它作为测试数据库,但我们没有这个密钥 如何复制此对称密钥(或创建与旧密钥完全相同的新密钥)并将其放入现有数据库中?它必须与另一个具有相同的值和键名 这是在SQLServer2008上 首先创建对称密钥时,请确保使用的是密钥源、标识值和算法参数 如果还没有,请创建数据库主密钥和证书以保护对称密钥 -- Create Database Master Key CREATE MASTER KE

我们有一个服务器,其数据库具有对称密钥(数据库->安全->对称密钥)。我们有一个备份副本数据库,我们正在使用它作为测试数据库,但我们没有这个密钥

如何复制此对称密钥(或创建与旧密钥完全相同的新密钥)并将其放入现有数据库中?它必须与另一个具有相同的值和键名

这是在SQLServer2008上


首先创建对称密钥时,请确保使用的是密钥源、标识值和算法参数

如果还没有,请创建数据库主密钥和证书以保护对称密钥

-- Create Database Master Key 
CREATE MASTER KEY ENCRYPTION BY
PASSWORD = 'Your Database Master Key Password here' 
GO

-- Create Encryption Certificate 
CREATE CERTIFICATE MyCertificateName
WITH SUBJECT = 'Your Certificate Description Here' 
GO

-- Create Symmetric Key
CREATE SYMMETRIC KEY MyKeyName WITH
IDENTITY_VALUE = 'Enter a key description',
ALGORITHM = AES_256, 
KEY_SOURCE = 'Enter a key phrase here (keep very secret)'
ENCRYPTION BY CERTIFICATE MyCertificateName;
  • IDENTITY_VALUE参数用于在sys.symmetric_keys表中创建guid,这两个数据库中的guid必须相同才能工作

  • KEY_SOURCE参数用于创建实际的密钥本身,因此请确保其完全相同并且受到良好的保护

  • 该算法当然是sql server用来加密和解密数据的算法,必须相同才能工作

您应该能够在两个数据库上运行上述脚本(当然替换为您自己的值),它将成功解密在另一个数据库中加密的数据

如果您现有的密钥不是以这种方式创建的,您将不得不用旧密钥解密所有内容,然后用新密钥重新加密

在这里可以找到几个关于密钥创建的好来源:

我认为“SQL Server 10”可能更适合称为“SQL Server 2008”