0

我有两个 SQL Server 2016 Enterprise 实例,每个实例都在不同的服务器上运行。它们是独立的服务器。ServerA 上有一个共享驱动器,可以从 ServerB 访问。我已经设置了从 MAIN_DB 上的数据库 (TESTDB) 到 MAIN_UAT 上的一个的日志传送。为此,我使用相同的密码在每台服务器 (SQLService) 上创建了相同的本地用户配置文件,并使用 SQL Server 配置管理器将 SQL 代理和 SQL Server 作业更改为在每台服务器上的此配置文件下运行。这似乎工作得相当愉快。然后我尝试在数据库上实现 TDE。首先,我停止了日志传送。然后,我在 MAIN_DB 上创建了第二个数据库 (TESTDB2),并设置了从 MAIN_UAT 上的主数据库到该数据库的日志传送。然后我使用这个脚本来设置 TDE。备份和恢复周期运行后,TESTDB2 也被加密了。同样,这没有问题。

use master
go
create master key encryption by password='something cryptic'
go 
create certificate TDECertificate with subject='Log Shipping certificate'
go 
create database encryption key with algorithm=AES_256 encryption by server  certificate TDECertificate  
alter database TestDB set encryption on

然后我尝试在辅助服务器 - MAIN_UAT 上重现这个。在主服务器上,我运行了这个脚本。

backup certificate TDECertificate to file='D:\Certificates\myCertificate.crt'
with private key (file='D:\LANSHARE\Certificates\LogShippingKey.key',encryption by password='something cryptic')

backup master key to file='D:\Certificates\MasterKey.key' encryption by password='something cryptic'

我将生成的三个文件复制到辅助服务器上的一个文件夹中,并让 SQLService(本地用户)完全控制该文件夹和文件。然后我尝试使用此脚本在辅助服务器上安装证书。

use master
go
restore master key from file='D:\Certificates\MasterKey.key' decryption by password='something cryptic'encryption by password='something cryptic'
go
create certificate TDECertificate from file='D:\Certificates\myCertificate.crt' with private key (file='D:\Certificates\LogShippingKey.key',decryption by password='something cryptic',encryption by password='something cryptic')
go

use TESTDB2
go
create database encryption key with algorithm=AES_256 encryption by server certificate TDECertificate

这给了我这个错误,这就是我卡住的地方。

Msg 15151, Level 16, State 1, Line 14
Cannot find the certificate 'TDECertificate', because it does not exist or you do not have permission.

简而言之,如何在不同域的服务器上实现带有日志传送的 TDE?谢谢你提供的所有帮助。

4

0 回答 0