gpt4 book ai didi

sql-server - sql server执行为触发器中的权限错误

转载 作者:行者123 更新时间:2023-12-02 09:54:42 29 4
gpt4 key购买 nike

我有一个触发器,我想发送一封有关 SalesClosing 表中的行更新的电子邮件。现在执行触发器的用户(dbuser)的权限非常有限。所以我希望触发器作为 dbmailuser 执行。有权发送电子邮件的用户。我测试了 dbmailuser 在以该用户身份登录时可以执行 sp_send_dbmail。当触发器触发时,我收到错误无法执行 sp_send_dbmail。所以我以 dbuser 身份登录,运行 EXECUTE AS LOGIN = 'dbmailuser';并能够执行 sp_send_dbmail。现在为什么我不能在触发器中做到这一点。我使用的是 sql server 2008。下面是触发器 ddl。

alter TRIGGER SalesClosingTrigger ON SalesClosing
WITH EXECUTE AS 'dbmailuser'
for insert, update
AS
BEGIN
EXEC msdb.dbo.sp_send_dbmail
--@profile_name = 'Test_Email_Profile',
@recipients='testemail@test.com',
@body = 'This is a test for Database Mail.',
@body_format = 'TEXT',
@subject = 'Database Mail Test'
END
GO

最佳答案

这是由于execute-as-user scoping - 到数据库级用户的上下文切换默认仅限于该数据库(并且上面的代码在给定数据库外部执行到 msdb),并且仅数据库身份验证器无效。请参阅上面的链接,了解有关如何解决/解决方法的多个选项。

关于sql-server - sql server执行为触发器中的权限错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1709335/

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