SQL Server выполнить как ошибки разрешения в триггере

У меня есть триггер, где я хочу отправить электронное письмо об обновлениях строки в таблице 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='[email protected]',
  @body = 'This is a test for Database Mail.',
  @body_format = 'TEXT',
  @subject = 'Database Mail Test'
END 
GO

Ответы на вопрос(3)

Ваш ответ на вопрос