SQL Server - Transact SQL - 用户有效使用 sys.crypt_properties 确定模块是否已签名的最低要求是什么?

问题描述 投票:0回答:1

我正在使用证书签署存储过程。

在存储过程中,确定正在运行的模块是否已签名所需的最低要求是什么?

如果没有签名,我想快速显示错误消息并退出模块或SP。

同样的问题以不同的方式提出:-

execute as user='lowprivilege'

select *

from   sys.crypt_properties

revert;

将为低权限用户返回一个空记录集;

对于我自己,返回了完整的列表。

sql-server t-sql permissions
1个回答
0
投票

你可以在程序主体中尝试这个:

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
© www.soinside.com 2019 - 2024. All rights reserved.