【问题标题】:Problems with sending notification emails from SQL Server 2008从 SQL Server 2008 发送通知电子邮件的问题
【发布时间】:2010-10-04 14:06:30
【问题描述】:

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

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


(来源:smilinginthesun.de


(来源:smilinginthesun.de

很遗憾,即使我认为我已经正确设置了数据库邮件,也没有发送电子邮件。

我能找到的所有指南都只是解释了如何设置数据库邮件(例如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/,但为什么不能只使用该内置功能?

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

【问题讨论】:

  • 使用sp_notify_operator 测试您的操作员设置。这可能有助于缩小问题范围。
  • 感谢您的建议。我已成功使用sp_notify_operator 发送邮件。所以运营商设置似乎工作。
  • 我已经询问了我们的支持团队,得到了以下答复:要从 SQL Server 代理中的代理作业发送电子邮件通知,必须激活警报系统。我们做到了。重新启动代理后,应使用数据库邮件系统。不幸的是,这不起作用。代理仍在尝试访问 Mapi 配置文件(如在 SQL 2000 中)。这个问题有几篇博客文章,但都没有帮助。现在,我们必须在 Microsoft 支持部门提交支持案例。

标签: sql-server sql-server-2008


【解决方案1】:

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

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

为此:

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

【讨论】:

  • 谢谢。那些日子我已经通过注册表的方式解决了这个问题,但是您的回答将来也可能对其他人有所帮助。
  • 这解决了我的问题,但我使用存储过程做到了:EXEC msdb.dbo.sp_set_sqlagent_properties @use_databasemail=1
【解决方案2】:

要从 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

【讨论】:

  • 您好 Jan。您知道如何检查“UseDatabaseMail”的当前注册表值吗?
  • 嗨 Konza,请尝试DECLARE @value varchar(255); EXEC master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE', N'SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent', N'UseDatabaseMail', N'REG_DWORD', @value OUTPUT; PRINT @value 之类的方法,其中 ;应该换行——抱歉,我没有 MSSQL Server 可以再尝试这个了,但它可能会这样工作。
【解决方案3】:

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

【讨论】:

    【解决方案4】:

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

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

    【讨论】:

    • 您仍然可以使用非本地帐户(实际上是MS推荐的),只要它是sysadmin固定服务器角色的成员。只要确保它不是本地或网络管理员即可。这是一个相关的问题:dba.stackexchange.com/questions/59128/…
    猜你喜欢
    • 1970-01-01
    • 2023-04-04
    • 2013-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多