【发布时间】:2010-12-15 03:00:16
【问题描述】:
我有一个触发器,我想在其中发送一封电子邮件以更新表 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
【问题讨论】:
标签: sql-server sql-server-2008 triggers