我正在使用证书签署存储过程。
在存储过程中,确定正在运行的模块是否已签名所需的最低要求是什么?
如果没有签名,我想快速显示错误消息并退出模块或SP。
同样的问题以不同的方式提出:-
execute as user='lowprivilege'
select *
from sys.crypt_properties
revert;
将为低权限用户返回一个空记录集;
对于我自己,返回了完整的列表。
你可以在程序主体中尝试这个:
if exists
(
select 1
from sys.procedures pro
inner join sys.crypt_properties cry on cry.major_id = pro.object_id
inner join sys.certificates cer on cer.thumbprint = cry.thumbprint
where object_name(@@PROCID) = pro.name
)
begin
print('I''m signed')
end