1

我有 MS SQL Server 2008 R2。我还使用电子邮件用户和密码将数据库邮件配置到我的邮件服务器。我为此电子邮件创建了一个操作员,并将该操作员分配给一个工作,并在工作成功、完成和失败时激活电子邮件通知。但是,在任何工作状态下都不会发送电子邮件通知。

也就是说,我使用了测试实用程序来测试数据库邮件。这些被放入正在建立的队列中,但电子邮件已成功发送,并且我收到所述电子邮件到测试中指定的目的地地址。然而,同样,虽然测试正在运行,但队列仍在构建每个测试,并且作业通知根本不起作用。

在调查 sysmail_log 和 sysmail_mailitems 后,我看到我的测试电子邮件在 sysmail_log 中成功,而这些邮件的上下文在 sysmail_mailitems 中。当我运行作业时,我在任一日志中都看不到数据库邮件正在尝试发送或失败的任何迹象。

最后,我使用以下 SQL 运行查询以发送电子邮件(已删除个人信息):

USE msdb
GO
EXEC sp_send_dbmail @profile_name='MyProfileName',
@recipients='test@Example.com',
@subject='Test message',
@body='This is the body of the test message.
Congrates Database Mail Received By you Successfully.'

这个查询运行并成功发送了一封电子邮件。那么,什么给了?当设置为向操作员发送有关成功、完成或失败的电子邮件时,为什么我没有收到有关作业的电子邮件通知?我错过了什么?

4

1 回答 1

2

您是否将工作设置为在完成后通过电子邮件发送给您?

右键单击作业,选择属性,通知。选择何时向操作员发送电子邮件的三个选项:失败、成功或完成。这假设您确实检查了邮件选项。

这篇文章应该有帮助!

http://blogs.msdn.com/b/billramo/archive/2009/03/30/sql-server-agent-and-database-mail-better-together.aspx

其他需要注意的事项:

1 - 您是否查看了 db mail、sql agent 和 sql server 日志?有没有错误?

2 - 查看工作历史。它是否曾经执行过第一步?

3 - 您始终可以将以下命令作为单行作业运行。

select 1 as flag into msdb.dbo.test_job

查看表是否已创建。如果是,则作业正在运行该步骤,否则不是。

4 - 在 msdb 中查看电子邮件的数据库邮件系统视图。

http://technet.microsoft.com/en-us/library/ms188023.aspx

SELECT * FROM msdb.dbo.sysmail_allitems 
SELECT * FROM msdb.dbo.sysmail_mailattachments 
SELECT * FROM msdb.dbo.sysmail_event_log 
SELECT * FROM msdb.dbo.sysmail_sentitems 
SELECT * FROM msdb.dbo.sysmail_faileditems
SELECT * FROM msdb.dbo.sysmail_unsentitems

5 - 查看数据库邮件帐户表。

SELECT * FROM msdb.dbo.sysmail_account
SELECT * FROM msdb.dbo.sysmail_profile
SELECT * FROM msdb.dbo.sysmail_profileaccount

您确定所有帐户都可以使用默认的公共配置文件来发送邮件吗?

6 - 请参阅我关于使用 TSQL 设置数据库邮件的分步文章。

http://craftydba.com/?p=1025

在不访问系统的情况下远程调试这样的错误是非常困难的。

我希望这些建议对您有所帮助!

于 2013-10-04T15:58:15.413 回答