【问题标题】:Sending e-mail notification when job fails doesn't work作业失败时发送电子邮件通知不起作用
【发布时间】:2013-04-04 10:20:08
【问题描述】:
  1. 我为系统管理员准备了脚本,用于创建和配置数据库邮件配置文件、帐户和操作员。他运行脚本,所以我创建了临时工作,但失败了。然后我在作业失败时设置电子邮件通知。我运行作业,但未发送任何电子邮件。 然后我尝试使用相同的操作符运行msdb.dbo.sp_send_dbmail 程序,我收到了电子邮件。作业失败时不发送电子邮件的原因是什么?如果作业失败时使用电子邮件通知,正在运行哪个过程 - 它与 sp_send_dbmail 不同吗?

  2. 另一件事是在数据库邮件日志中没有关于发送电子邮件状态的信息(它是空的) - 也许我没有权限查看日志?

  3. 我将配置文件设置为公开,运行dbo.sysmail_add_principalprofile_sp procedure,但是当我尝试发送运行msdb.dbo.sp_send_dbmail 的电子邮件时,我收到一个错误:EXECUTE 权限被拒绝。 . 为什么它只在我以用户身份登录时才有效?

我使用的是 SQL Server 2008。

这是我传递给系统管理员的 T-SQL 代码,用于创建和配置数据库邮件。

-- Create a Database Mail account

EXECUTE msdb.dbo.sysmail_add_account_sp
    @account_name = 'Mail Account',
    @description = 'Mail account for administrative e-mail.',
    @email_address = 'xx@xx.pl',
    @display_name = 'Job failure notification',
    @mailserver_name = 'xx.xx.xxx' ,
    @username = 'aaa',
    @password = 'xxx'

-- Create a Database Mail profile


 EXECUTE msdb.dbo.sysmail_add_profile_sp
    @profile_name = 'Database Mail Profile',
    @description = 'Profile used for job failure notifications.' ;

-- Add the account to the profile


EXECUTE msdb.dbo.sysmail_add_profileaccount_sp
    @profile_name = 'Database Mail Profile',
    @account_name = 'Mail Account',
    @sequence_number =1 ;

-- Enable Mail profile in SQL Agent


EXEC master.dbo.xp_instance_regwrite 
      N'HKEY_LOCAL_MACHINE', 
      N'SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent', 
      N'DatabaseMailProfile', 
      N'REG_SZ', 
      N'Database Mail Profile'
GO

-- Create new operator


EXEC msdb.dbo.sp_add_operator @name=N'SQL Job Failure', 
            @enabled=1, 
            @weekday_pager_start_time=90000, 
            @weekday_pager_end_time=180000, 
            @saturday_pager_start_time=90000, 
            @saturday_pager_end_time=180000, 
            @sunday_pager_start_time=90000, 
            @sunday_pager_end_time=180000, 
            @pager_days=0, 
            @email_address=N'xx@xx.pl', 
            @category_name=N'[Uncategorized]'
GO

-- Setting profile as public

EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
    @profile_name = 'Database Mail Profile',
    @principal_name = 'public',
    @is_default = 0 ;

【问题讨论】:

    标签: sql-server-2008 database-mail


    【解决方案1】:

    我认为您必须在执行完这些脚本后重新启动 SQL 代理。 检查

    • 作业通知页面中的设置 - 必须选中电子邮件复选框并且必须定义操作员
    • 右击Sql Agent -> 属性 - 警报设置 - 必须提供电子邮件设置

    查看此article 以确保您没有错过任何内容。

    【讨论】:

    • 您好 dferidarov,感谢您的回复。不幸的是,我无法使用 GUI(无权限)检查所有内容。我附上了 T-SQL 代码,它是为创建数据库邮件而运行的。但您可能是对的,它需要 SQL 代理 - 我会检查一下。
    • 不幸的是它没有帮助。这很奇怪,因为在测试环境中运行这个脚本并重新启动 SQL Agent,导致作业失败时发送电子邮件。我不知道问题出在哪里。
    • 您是否检查过我在答案中发布的文章是否有遗漏(例如 Sql Agent Properties-> Alert Settings)?
    • 是的,但我无权检查 SQL 代理中是否启用了正确的配置文件。但是您可能是对的,这可能是问题所在。我检查了负责在 SQL 代理中启用配置文件的脚本部分,仅当尚未分配给 SQL 代理的其他配置文件时才能正常工作。如果有它不会覆盖当前的。
    • 默认情况下,我认为此 SQL 代理警报设置未配置到任何邮件分析器。
    猜你喜欢
    • 2018-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多