我们一直在尝试这里的步骤: http : //msdn.microsoft.com/en-us/library/cc278098.aspx但不断收到此错误:消息15151,级别16,状态1,行1无法find证书的tdeCert ',因为它不存在或者你没有权限。
这意味着你没有正确地按照步骤操作。 确保tdeCert存在于master.sys.certificates中的select * from master.sys.certificates ,因为证书是在步骤2创build的: CREATE CERTIFICATE tdeCert WITH SUBJECT = 'TDE Certificate'并且必须存在。 您跳过了一个步骤,或者在错误的数据库中创build了证书,或者在证书名称中包含拼写错误(包括区分大小写的服务器)。
您需要注意使用正确的数据库:
use master; CREATE MASTER KEY ENCRYPTION BY PASSWORD= 'password'; go CREATE CERTIFICATE tdeCert WITH SUBJECT = 'TDE Certificate'; go BACKUP CERTIFICATE tdeCert TO FILE = 'C:\location' WITH PRIVATE KEY ( FILE = 'C:\location2', ENCRYPTION BY PASSWORD = 'password'); go use your_db CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER CERTIFICATE tdeCert
注意use master并use your_db 。
透明数据encryption(TDE)通过使用存储在数据库引导logging中的数据库encryption密钥(DEK)encryption数据库。 DEK又由数据库主密钥保护,而数据库主密钥又由服务主密钥保护
第一步是创build一个主密钥:
USE master; GO CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Password'; GO
创build主encryption密钥后,创build将用于encryption数据库的证书:
CREATE CERTIFICATE servercertificate WITH SUBJECT = 'DataCertificate';
在创build主密钥和证书时,可以使用CREATE DATABASE ENCRYPTION KEY语句为特定数据库创buildDEK:
USE DecryptTesting; GO CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_128 ENCRYPTION BY SERVER CERTIFICATE servercertificate; GO
您会在结果窗口中看到警告:
警告:用于encryption数据库encryption密钥的证书尚未备份。 您应该立即备份证书和与证书关联的私钥。 如果证书不可用或者您必须在另一台服务器上还原或附加数据库,则必须同时备份证书和私钥,否则将无法打开数据库。
使用TDE时,请在主数据库中创build服务器证书的备份。 您可以使用BACKUP CERTIFICATE语句来创build证书和私钥的备份,这两者都是证书恢复所必需的。 私钥密码不一定与数据库主密钥密码相同:
BACKUP CERTIFICATE ServerCertificate TO FILE = 'ServerCertExport' WITH PRIVATE KEY ( FILE = 'PrivateKeyFile', ENCRYPTION BY PASSWORD = '<PrivateKeyPasswordHere>' );
现在你可以encryption数据库了:
ALTER DATABASE DecryptTesting SET ENCRYPTION ON;