Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 sql server 2005数据库邮件错误(操作已超时)_Sql Server 2005 - Fatal编程技术网

Sql server 2005 sql server 2005数据库邮件错误(操作已超时)

Sql server 2005 sql server 2005数据库邮件错误(操作已超时),sql-server-2005,Sql Server 2005,我已将数据库邮件配置为从sql数据库发送时事通讯电子邮件。我有一个存储过程,用于选择订阅者的电子邮件并向他们发送如下邮件: EXEC msdb.dbo.sp_send_dbmail @profile_name = 'ProfileName', @recipients = @email, @subject = @thesubject, @body = @themessage, @body_format = 'HTML' ; 用于发送的帐户工作正常,因为当我在配置数据库邮件后发送测试邮件时,它已

我已将数据库邮件配置为从sql数据库发送时事通讯电子邮件。我有一个存储过程,用于选择订阅者的电子邮件并向他们发送如下邮件:

EXEC msdb.dbo.sp_send_dbmail 
@profile_name = 'ProfileName',
@recipients = @email,
@subject = @thesubject,
@body = @themessage,
@body_format = 'HTML' ;
用于发送的帐户工作正常,因为当我在配置数据库邮件后发送测试邮件时,它已成功发送,但问题是发送了多个邮件

当前表中有50封电子邮件在执行存储过程后,我检查了msdb表sysmails\u event\u log、sysmails\u faileditems和sysmails\u sentitems,发现只有前12封电子邮件被发送,其余邮件失败,事件日志中的错误消息为:

由于邮件服务器故障,邮件无法发送给收件人。(使用帐户1发送邮件(2009-12-01T16:55:11)。异常消息:无法向邮件服务器发送邮件。(操作已超时。)

我检查了13号和更高版本的电子邮件,没有发现任何错误,因此我再次尝试执行该过程,这次它发送到了第14封电子邮件,其余邮件因相同错误而失败,因此我更改了该过程,并让它选择从15号邮件开始的邮件 (好像它将从记录15发送到50)并对其进行测试,这次它发送到第13封电子邮件,我从27到50中选择并执行,再次发送到第12封

我不明白这里发生了什么一次只发送12-14封邮件的行为是什么

有人能帮我吗


提前感谢

SMTP服务器位于哪里?您是否检查过是否可以通过SMTP服务器一次发送超过12封电子邮件,而不涉及SQL server?问题似乎不是SQL Server,而是SMTP服务器上的某种策略。在数据库服务器和SMTP服务器之间的防火墙或其他网络设备上也可能存在某种滥用预防措施。您是否考虑过在数据库服务器上设置SMTP服务,然后设置数据库邮件,使其使用本地SMTP服务器而不是通过网络(并且可能会遇到上面提到的一个或多个策略)?当然,您应该安全地设置SMTP,确保只允许来自本地计算机的连接。

我通过两件事来解决这种情况:

  • 重做数据库邮件配置文件
  • 重新启动Windows SMTP服务

  • 希望它适用于任何遇到同样情况的人。

    我也遇到了这个问题。我的解决方案是设置电子邮件发送列表的延迟。问题解决了

      WHILE @@FETCH_STATUS = 0
      BEGIN
      WAITF OR DELAY '000:00:10'
    

    SMTP服务器位于数据库服务器的同一个域上,SMTP服务器一次可以发送12封以上的电子邮件,无论是否涉及SQL server,我认为数据库服务器和SMTP服务器之间没有任何滥用预防措施,因为在使用数据库邮件之前,我使用的是XPSMTP扩展过程为了从SQL发送邮件,它工作正常,并且所有邮件都已发送,我只切换到数据库邮件,因为我需要以nvarchar(max)的形式发送一个较大的邮件正文,而xpsmtp只允许使用nvarchar(4000)。因此我认为问题可能出在数据库邮件上,而不是SMTP服务器上,因为在切换到数据库邮件之前一切正常。至于使用本地SMTP服务器的解决方案,我希望这是最后一个解决方案。感谢这是我在数据库邮件之前使用的扩展过程我在过去也使用过Gert的过程,取得了巨大的成功,包括在2005年的服务器上,我们在数据库邮件方面遇到了不同的问题(尽管我不会像你那样费心发送大量电子邮件)。因此,通过扩展过程,您可以收到12封以上的电子邮件,但对于数据库邮件,您不会收到吗?您是否在域上尝试了其他SMTP服务器?将SMTP服务器放在本地邮箱上有什么问题?我不会发送大量电子邮件。这是一份html新闻稿,将发送给50到100人,其大小大于nvarchar(4000),可能达到7000或8000。因此,当我使用xpsmtp扩展过程时,成员收到了新闻稿,但被截断。通过扩展程序,整个邮件列表不再像数据库邮件那样一次发送12封邮件的子集。