如何在SQL Server中查询指定对称密钥加密的表和列?
反向查询对称密钥对应的加密表和列
可以直接通过系统视图关联查询,无需逐个排查表,就能确定每个对称密钥加密的表和列,包括指定密钥对应的所有加密对象。
查询指定对称密钥加密的所有表和列
替换语句中的'你的对称密钥名'为实际密钥名称即可:
SELECT SCHEMA_NAME(t.schema_id) AS 架构名, t.name AS 表名, c.name AS 列名, k.name AS 对称密钥名 FROM sys.tables t JOIN sys.columns c ON t.object_id = c.object_id JOIN sys.symmetric_keys k ON KEY_NAME(c.column_id, t.object_id) = k.name WHERE k.name = '你的对称密钥名'
查询所有对称密钥对应的加密表和列
如果需要统计全部密钥的加密对象,去掉WHERE条件即可:
SELECT SCHEMA_NAME(t.schema_id) AS 架构名, t.name AS 表名, c.name AS 列名, k.name AS 对称密钥名 FROM sys.tables t JOIN sys.columns c ON t.object_id = c.object_id JOIN sys.symmetric_keys k ON KEY_NAME(c.column_id, t.object_id) = k.name ORDER BY k.name, t.name, c.name
逻辑说明
通过sys.tables(表信息)、sys.columns(列信息)与sys.symmetric_keys(对称密钥信息)关联,利用KEY_NAME函数直接获取加密列绑定的密钥名称,进而反向匹配出指定密钥对应的所有加密列,全程无需逐个表手动排查。
内容的提问来源于stack exchange,提问作者frank
相关产品推荐
相关产品推荐

