首页 > 解决方案 > 如何一次性检查我的所有 SQL Server 存储过程是否已加密?

问题描述

有什么方法可以一次检查我所有的存储过程是否都加密了?

我知道要查看程序的定义,我会收到一条消息,告诉我它已加密。

EXEC sp_helptext 'StoredProcedureName';

但是我有很多存储过程(1000+),那么有没有更好的方法来检查所有存储过程的 1 个镜头?

标签: sql-servertsqlstored-procedures

解决方案


您需要检查sys.sql_modules系统视图

SELECT
    p.name,
    IsEncrypted = CAST(CASE WHEN m.definition IS NULL THEN 1 ELSE 0 END AS bit)
FROM sys.procedures p
JOIN sys.sql_modules m ON m.object_id = p.object_id
WHERE m.definition IS NULL

或者,您可以检查对象属性(对@AaronBertrand 表示敬意

SELECT
    name,
    IsEncrypted = OBJECTPROPERTY([object_id], 'IsEncrypted')
FROM sys.procedures;

推荐阅读