我们的 SQL Server 数据库具有报告功能,允许调用者读取但不能写入任何表,因为用户(或者更准确地说,代表用户操作的网络应用程序打开的连接)只有数据库的数据读取者权限。
我们希望能够编写一个存储过程,它是一个特殊的“清理报告”,可以在运行另一个报告之前清除数据库中的旧缓存数据。我们希望上面的同一个只读用户能够运行这个存储过程。存储过程中的查询将执行 DELETE 操作,但我们不想让用户能够删除除调用此过程之外的任何内容。
我知道 Module Signing但希望避免处理证书的复杂性。
还有其他解决方案吗?如果重要的话,我们正在使用 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
关于sql-server - SQL Server 存储过程可以以比其调用者更高的权限执行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15980286/