SQL Server 2016 DB邮件未发送


17

我正在使用SQL Server 2016,并受到冲击...我的DB Mail无法发送,而且我的地方用光了。我仔细检查了对DBmail可执行文件的SQL帐户权限-它已读取并执行。我输入了防火墙出站端口587的规则。我尝试了另一个具有相同未发送问题的邮件帐户和配置文件。日志(db邮件日志)中唯一的条目是服务的开始和结束。我在任何地方都找不到错误。电子邮件似乎只是进入发送队列,而永不离开。这些帐户可以自己发送邮件,也可以从另一台计算机上的SQL Server 2014实例接收电子邮件。

我有一排发送状态为“未发送”的项目,除了一长列未发送的邮件之外,还检查了所有正常位置的所有预期结果:

SELECT * FROM msdb..sysmail_event_log order by log_id DESC

SELECT * FROM dbo.sysmail_mailitems

SELECT * FROM dbo.sysmail_sentitems

USE msdb
SELECT sent_status, *
FROM sysmail_allitems

 SELECT is_broker_enabled FROM sys.databases WHERE name = 'msdb';

 EXECUTE msdb.dbo.sysmail_help_status_sp

我尝试将其关闭然后再打开...所以我错过了DMV等可能会发现这种情况的信息吗?这是我在搜索中没有发现的SQL Server 2016的已知问题吗?还有其他可能的步骤来发送此邮件吗?


您发送电子邮件的个人资料是否是私有的?
Kin Shah

有错吗 日志呢?和邮件服务器?邮件服务器是否从sql接收任何连接?这个问题缺少很多相关信息……
Paolo 2016年

@kin不,这是一封公开电子邮件。这两封电子邮件都是Office 365,并且帐户都可以通过SQL 2014发送和接收罚款。在描述情况的第一段末添加了几个详细信息。
戴夫

我的意思是您的数据库邮件配置文件。
Kin Shah

您是否可以从SQL Server 2016框中ping / telnet SMTP服务器?如果是,您是否可以尝试从mssqltips.com/sqlservertip/1625/…链接运行VB脚本以排除任何SMTP问题。如果收到测试邮件,则可以确定这是SQL Server的问题。
SQLPRODDBA

Answers:


17

一时兴起,当再次检查权限时,我双击了实际的DB邮件可执行文件。SQL Server 2014计算机上的结果是一个空的命令窗口。在SQL Server 2016上,单击DB Mail可执行文件显示以下消息:

在此处输入图片说明

我在SQL Server 2016文档中的任何地方都找不到此要求,但这显然是一项要求。除了安装.NET 3.5之外,DB Mail可以正常运行,没有其他更改。


我遇到过同样的问题。通过应用.net 3.5解决。
Swears-a-lot爵士,

这也解决了我的问题!这让我发疯了,但是安装NET3.5解决了我的问题!
NULL.Dude17年

这为我在2016 SP1 CU8上解决了同一问题
James Anderson

DB邮件可执行文件位于何处?
JzInqXc9Dg

@Dave OH耶稣,这真是令人惊讶。只是想知道...您在这些服务器上使用LogMeIn吗?我们遇到了离奇的情况,即LogMeIn会卸载或删除内容,而他们拒绝接受。我的数据库邮件曾经在一个盒子上正常工作,并且在我们移到LogMeIn的那段时间肯定停止了工作
John Zabroski

10

根据Microsoft支持,SQL Server 2016安装程序中存在一个错误,导致没有.net 3.5的数据库邮件无法正常工作

解决方法是在存在DatabaseMail.exe的同一文件夹(Binn文件夹)中创建一个DatabaseMail.exe.config文件,将以下内容写入该文件并以utf-8编码保存

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true"> 
<supportedRuntime version="v4.0"/>     
<supportedRuntime version="v2.0.50727"/>
</startup>
</configuration>

来源: FIX:SQL Server 2016数据库邮件在未安装.NET Framework 3.5的计算机上不起作用


4

看看这个代替。这样,您只需要复制一个文件,而不需要安装.net 3.5。需要首先安装CU1。请点击这里了解更多详情。


2
已经有[SQL Server 2016的累积更新2 | 带有[FIX:SQL Server 2016数据库邮件的support.microsoft.com/zh-cn/kb/3182270]在未安装.NET Framework 3.5的计算机上不起作用| support.microsoft.com/en-us/kb/3186435]
弗拉迪斯拉夫

1
在这里结束之前只花了30分钟的时间来研究这个问题。谢谢您为我节省了更多时间。
Paul

1

除了已经提到的原因之外,按照此处指示的那样在SQL Server代理级别激活电子邮件配置文件也很重要。

  • 右键单击“ SQL Server代理”,然后选择“属性”。
  • 在左窗格中选择“警报系统”

  • 选中标记>启用邮件配置文件

  • 验证邮件系统:数据库邮件
  • 验证邮件配置文件:SQLAlerts
  • 选中标记>在通知消息中包含电子邮件正文
  • 单击确定。
  • 重新启动代理。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.