1
  1. 我为系统管理员准备了脚本,用于创建和配置数据库邮件配置文件、帐户和操作员。他运行脚本,所以我创建了临时工作,但失败了。然后我在作业失败时设置电子邮件通知。我运行作业,但未发送任何电子邮件。然后我尝试运行msdb.dbo.sp_send_dbmail 程序,使用相同的操作员,我收到了电子邮件。作业失败时不发送电子邮件的原因是什么?在作业失败时使用电子邮件通知的情况下正在运行哪个过程 - 它不同于sp_send_dbmail

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

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

我正在使用 SQL Server 2008。

这是一个 T-SQL 代码,我将它传递给 sysadmin 用于创建和配置数据库邮件。

-- 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 ;
4

1 回答 1

7

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

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

查看这篇文章以确保您没有错过任何内容。

于 2013-04-04T11:04:58.017 回答