如何检测并获取表列加密信息

Hel*_*one 2 sql-server encryption

我想做一个查询来检查加密并输出随机给定数据库表中的所有列(如果它们已加密)。所以我希望输出看起来像这样

Column Name   |   Encryption Key Name  |  Encryption Type  |  Algorithm Used
Baby Power         Key name for bp           Randomized       AEAD_AES_256_CBC_HMAC_SHA_256
Diaper             Key name for Diaper       Deterministic    AEAD_AES_256_CBC_HMAC_SHA_256   
Run Code Online (Sandbox Code Playgroud)

nej*_*jcs 6

您可以使用以下查询:

SELECT 
    t.name AS TableName,
    c.name AS ColumnName,
    k.name AS KeyName,
    c.encryption_type_desc,
    c.encryption_algorithm_name
FROM sys.columns c
    INNER JOIN sys.column_encryption_keys k ON c.column_encryption_key_id = k.column_encryption_key_id
    INNER JOIN sys.tables t ON c.object_id = t.object_id
WHERE encryption_type IS NOT NULL
Run Code Online (Sandbox Code Playgroud)

这将返回当前数据库中的所有加密列。如果您只需要特定表,请添加带有过滤器的 where 条件t.name

一般来说,如果您想查找有关不同数据库对象的信息,sys架构下的系统视图是正确的位置。