检查我在 SQL 服务器上的数据库实例是否由 TDE 加密?

Check if my database instance on SQL server is encrypted by TDE?

我对 SQL 服务器的透明加密 (TDE) 有疑问。我需要转储一个数据库实例,该实例将由另一个 DBA 通过转储的数据文件远程恢复。我被要求确保转储的数据文件没有 TDE,以便 DBA 可以恢复它。上网查了一下,发现一个查询列出加密状态如下:

SELECT db_name(database_id), encryption_state 
FROM sys.dm_database_encryption_keys;

我的数据库实例根本不在结果中。我运行另一个查询如下:

SELECT
    db.name,
    db.is_encrypted,
    dm.encryption_state,
    dm.percent_complete,
    dm.key_algorithm,
    dm.key_length
FROM
    sys.databases db
    LEFT OUTER JOIN sys.dm_database_encryption_keys dm
        ON db.database_id = dm.database_id;
GO

我的数据库实例 is_encrypted 的值为 0,所有其他值为空。

这是否意味着我的数据库实例根本没有加密?

如果你的输出是这样的...

    name       | is_encrypted | encryption_state | percent_complete | key_algorithm | ley_length
    --------------------------------------------------------------------------------------------
    MyDatabase | 0            | NULL             | NULL             | NULL          | NULL

...您的数据库 [MyDatabase] 未加密。它也没有配置数据库加密密钥。

但是,如果任何数据库在 [is_encrypted] 以外的列中具有非 NULL(例如 [encryption_state] = 1),则这些数据库要么被加密,要么被部分加密 encrypted/decrypted 或准备加密。

在此处阅读有关加密状态的详细信息: https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-database-encryption-keys-transact-sql?view=sql-server-ver15