我有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.'
此查询运行并成功发送电子邮件。那么,是什么给出的?为什么我没有收到有关工作的电子邮件通知,因为他们设置为成功,完成或失败时向运营商发送电子邮件?我错过了什么吗?
答案 0 :(得分:2)
您是否将工作设置为在完成后通过电子邮件发送给您?
右键单击作业,选择属性,通知。选择何时向运营商发送电子邮件的三个选项:失败,成功或完成。这假设您确实检查了邮件选项。
这篇文章应该有所帮助!
其他可以看到的事项:
1 - 你看过db mail,sql agent和sql server logs吗?有什么错误吗?
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设置db邮件的分步文章。
远程无法访问系统来调试此类错误非常困难。
我希望这些建议有所帮助!