从SQL Server 2008发送通知电子邮件的问题

时间:2010-10-04 14:06:30

标签: sql-server sql-server-2008

我在SQL Server 2008中设置电子邮件通知时遇到问题。

我正在使用SQL Server 2008来构建数据立方体。此过程包含多个作业,这些作业都计划在特定时间每晚运行。要查看作业是否正常运行,可以设置电子邮件通知。

http://new.smilinginthesun.de/stackoverflow/01emailOperator.png http://new.smilinginthesun.de/stackoverflow/02emailNotification.png

不幸的是,即使我认为我已经正确设置了数据库邮件,也没有发送电子邮件。

我能找到的所有指南都解释了如何设置数据库邮件(例如http://blog.sqlauthority.com/2008/08/23/sql-server-2008-configure-database-mail-send-email-from-sql-database/),但就是这样。
如果我发送邮件来测试功能(通过测试电子邮件按钮或从T-SQL脚本),它工作正常,电子邮件到达。但是,在作业中使用通知功能时,它甚至不会创建sysmail_mailitemssysmail_log条目。
我也成功地使用sp_notify_operator发送了一封电子邮件。所以操作员设置似乎也有效。 (谢谢,Joe Stefanelli,提示。)

为SQL Server 2005编写了一个很好的解决方法,它也适用于我:http://www.howtogeek.com/howto/database/sending-automated-job-email-notifications-in-sql-server-with-smtp/,但为什么不能只使用该内置功能?

是否有人知道是否还有其他事情要做,以使该电子邮件通知任务正常工作?谢谢你的建议。

4 个答案:

答案 0 :(得分:56)

我迟到但我看到你的帖子有同样的问题。

解决方案是为警报启用邮件配置文件。

为此:

  1. 右键单击“SQL Server代理”
  2. 然后是“属性”。
  3. 然后转到“警报系统”部分。
  4. 勾选“启用邮件配置文件”框。
  5. 然后“确定”。
  6. 重新启动SQL Server代理服务。

答案 1 :(得分:12)

要从SQL Server代理中的代理作业发送电子邮件通知,必须激活警报系统。我们做到了。重新启动代理后,应使用数据库邮件系统。不幸的是,这不起作用。代理仍在尝试访问Mapi配置文件(如在SQL 2000中)。

未设置以下注册表值:"UseDatabaseMail"=dword:00000001
将其设置为1后,使用了数据库邮件系统 您可以直接在SQL Server中执行此操作:

EXEC master.dbo.xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent', N'UseDatabaseMail', N'REG_DWORD', 1

答案 2 :(得分:3)

我尝试过ZeuG。表示仍然没有成功...然后我重新启动了SQL代理。这就是让工作电子邮件通知对我有用的原因。

答案 3 :(得分:1)

对我来说,当我右键单击数据库邮件并说发送测试电子邮件时,SQL电子邮件工作正常。但是,在为所有严重性设置警报并运行RAISERROR (N'Test alert!', 20, 1) WITH LOG;后,没有收到任何电子邮件。 问题是SQL Server代理运行的服务帐户显然,虚拟帐户NT Service\SQLSERVERAGENT(或任何默认帐户)无权访问访问网络上的对象,这包括电子邮件。

要修复此问题,请将服务更改为使用Users组下的本地帐户,重新启动SQL Server代理,然后尝试运行抛出错误的命令,例如上面的RAISERROR语句。您现在应该收到电子邮件。