我计划将server数据库迁移到另一台服务器。SSMS对象资源管理器中的安全>证书视图下列出了一个证书。
我运行了下面的查询来检查数据库是否加密了,并且没有.
select name, is_encrypted from sys.databases如果使用此证书,如何查找?我怎样才能确保移民成功?
谢谢!
发布于 2016-11-18 20:57:40
这将提供有关加密启用TDE加密的数据库的证书的详细信息:
use master
select
db_name(db.database_id) DatabaseName,
c.name,
*
from sys.databases db
join sys.dm_database_encryption_keys dek
on
dek.database_id=db.database_id
join sys.certificates c
on
dek.encryptor_thumbprint=c.thumbprint
where
db.is_encrypted=1对于用户数据库中的所有其他列级加密,备份数据库主密钥,将其迁移到其他环境,并在还原用户数据库后进行还原。
发布于 2016-11-19 03:09:23
据我所知,可以通过以下三个查询找到证书链接的位置--无论是id还是thumbprint:
SELECT N'key_encryptions' AS [Where?],
crt.[name], crt.[principal_id], crt.[pvt_key_encryption_type_desc],
N'---' AS [---], ke.*
FROM sys.certificates crt
INNER JOIN sys.key_encryptions ke
ON ke.[thumbprint] = crt.[thumbprint]
SELECT N'database_mirroring_endpoints' AS [Where?],
crt.[name], crt.[principal_id], crt.[pvt_key_encryption_type_desc],
N'---' AS [---], dme.*
FROM sys.certificates crt
INNER JOIN sys.database_mirroring_endpoints dme
ON dme.[certificate_id] = crt.[certificate_id]
SELECT N'service_broker_endpoints' AS [Where?],
crt.[name], crt.[principal_id], crt.[pvt_key_encryption_type_desc],
N'---' AS [---], sbe.*
FROM sys.certificates crt
INNER JOIN sys.service_broker_endpoints sbe
ON sbe.[certificate_id] = crt.[certificate_id]并且,在这个答案中显示的查询:
您可以将证书(及其私钥或数据库主密钥)备份到文件中,然后将这些文件还原到新的数据库中。有关以下命令,请参阅MSDN文档:
而且,如果任何证书都是ENCRYPTED_BY_MASTER_KEY (或其他什么的),那么您可能还需要查看:
https://dba.stackexchange.com/questions/74316
复制相似问题