我在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_mailitems
或sysmail_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/,但为什么不能只使用该内置功能?
是否有人知道是否还有其他事情要做,以使该电子邮件通知任务正常工作?谢谢你的建议。
答案 0 :(得分:56)
我迟到但我看到你的帖子有同样的问题。
解决方案是为警报启用邮件配置文件。
为此:
答案 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
语句。您现在应该收到电子邮件。