gpt4 book ai didi

sql-server-2005 - 如何在限制权限的同时执行 sp_send_dbmail

转载 作者:行者123 更新时间:2023-12-04 23:34:26 24 4
gpt4 key购买 nike

有没有办法为我的数据库中的用户提供访问权限以执行 msdb.dbo.sp_send_dbmail 无需将它们添加到 MSDB 数据库和 DatabaseMailUserRole?

我试过这个:

ALTER PROCEDURE [dbo].[_TestSendMail]
(
@To NVARCHAR(1000),
@Subject NVARCHAR(100),
@Body NVARCHAR(MAX)
)
WITH EXECUTE AS OWNER
AS
BEGIN
EXEC msdb.dbo.sp_send_dbmail @profile_name = N'myProfile',
@recipients = @To, @subject = @Subject, @body = @Body
END

但我收到此错误:
The EXECUTE permission was denied on the object 'sp_send_dbmail', database 'msdb', schema 'dbo'.

谢谢!

最佳答案

您的方法没问题,但您的包装程序必须在 msdb 数据库中。
然后,您执行“EXEC msdb.dbo._TestSendMail”

这仍然会在 msdb 中留下对 dbo._TestSendMail 的权限问题。
但是 public/EXECUTE 就足够了:它只公开您需要的 3 个参数。

如果有疑问,请添加 WITH ENCRYPTION。这足以阻止没有系统管理员权限的任何人查看代码

USE msdb
GO
CREATE PROCEDURE [dbo].[_TestSendMail]
(
@To NVARCHAR(1000),
@Subject NVARCHAR(100),
@Body NVARCHAR(MAX)
)
-- not needec WITH EXECUTE AS OWNER
AS
BEGIN
EXEC dbo.sp_send_dbmail @profile_name = N'myProfile',
@recipients = @To, @subject = @Subject, @body = @Body
END

关于sql-server-2005 - 如何在限制权限的同时执行 sp_send_dbmail,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/530320/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com