SQL Server存储过程的执行权限能否高于其调用者?[英] can a SQL Server stored proc execute with higher permission than its caller?

本文是小编为大家收集整理的关于SQL Server存储过程的执行权限能否高于其调用者?的处理方法,想解了SQL Server存储过程的执行权限能否高于其调用者?的问题怎么解决?SQL Server存储过程的执行权限能否高于其调用者?问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我们的 SQL Server 数据库具有报告功能,允许调用者读取但不能写入任何表,因为用户(或者更准确地说,代表用户操作的网络应用打开的连接)只有数据库的 datareader 权限.

我们希望能够编写一个存储过程,它是一个特殊的"清理报告",它将在运行另一个报告之前清理旧缓存数据的数据库.我们希望上面的同一个只读用户能够运行这个存储过程.存储过程中的查询将执行 DELETE 操作,但我们不希望用户能够通过调用此过程来删除任何内容.

我知道 模块签名,但希望避免复杂性处理证书.

还有其他解决方案吗?如果这很重要,我们将使用 SQL 标准身份验证.

推荐答案

CREATE PROCEDURE dbo.my_procedure
WITH EXECUTE AS OWNER
AS
BEGIN
  -- do your stuff here
END
GO
GRANT EXEC ON dbo.my_procedure TO [your_datareader_member];
GO

本文地址:https://www.itbaoku.cn/post/1793993.html