s-s-rS 2008 报告订阅电子邮件随机接收传递扩展加载错误

Posted

技术标签:

【中文标题】s-s-rS 2008 报告订阅电子邮件随机接收传递扩展加载错误【英文标题】:s-s-rS 2008 Report Subscription Emails Randomly Receiving Delivery Extension Loading Errors 【发布时间】:2011-11-02 05:44:25 【问题描述】:

我创建了 3 份报告,并为它们设置了每日订阅,每份都通过电子邮件发送给收件人列表。

当我查看我的订阅时,我看到消息“无法加载此订阅的传递扩展”,有时它甚至说它已成功通过电子邮件发送给收件人。

有些报告已发送,但我收到的报告是随机的。

这不是s-s-rS2008R2,这是s-s-rS2008

我已确保所有电子邮件地址都不是别名 我已确保 SMTP 服务器允许来自报告服务器的中继 我已确保所有电子邮件地址仍然有效 我没有在日志中看到错误。

有什么想法吗?

谢谢,

【问题讨论】:

【参考方案1】:

这个问题已经很老了,但是今天在 SQL Server 2014 中仍然会出现错误消息,并且在编写错误消息的排名最高的搜索结果时并不是特别有用,也没有包含任何解释为什么会出现不一致的错误。

以下是解决此问题的步骤:

1) 确认已为 s-s-rS 实例启用电子邮件传递(即查看 Reporting Services 配置管理器的“电子邮件设置”部分。

请注意,如果您有横向扩展配置,则需要在加入横向扩展配置的每个实例上启用电子邮件传递,即使客户端不访问这些实例也是如此。即使您没有设置任何类型的网络级负载平衡,订阅事件的任务也会在横向扩展配置中的实例之间得到平衡。我不确定平衡是如何工作的确切细节,但this post on blogs.msdn.com 提供了一些关于如何在 s-s-rS 中处理事件的详细信息:

订阅运行时会发生几件事:

SQL Server 代理作业触发并在 RS 目录的事件表中放置一行,其中包含处理订阅所需的设置

RS 服务器服务的线程数量有限(每个 CPU 2 个),每隔几秒轮询一次事件表以查找要处理的订阅

当它发现一个事件时,它会在 Notifications 表中放置一行并开始处理订阅,其中包括执行数据驱动订阅查询(如果存在)、处理报告、将其呈现为指定格式( html、PDF、Excel 等),并将最终结果发送到电子邮件地址或文件共享。请注意,ExecutionLog 表中还会有一行用于报告执行。

2) 查看 s-s-rS 错误日志(通常在 C:\Program Files\Microsoft SQL Server\MSRS??.<instance name>\Reporting Services\LogFiles 中)。如果您正在运行横向扩展配置,则需要在横向扩展配置中的每个实例上执行此操作;只有无法处理订阅事件的实例才会记录错误。

顺便说一句,如果您在订阅触发时对 s-s-rS 数据库运行 SQL Server 跟踪或扩展事件会话,您应该能够看到哪个 s-s-rS 实例正在处理订阅事件并且失败了。

3) 如果您在执行第 1 步和第 2 步后仍然卡住,可能值得使用 Sysinternals 的 Process Explorer 在订阅运行时监控文件系统和网络访问。电子邮件传递扩展 DLL 似乎是 C:\Program Files\Microsoft SQL Server\MSRS??.<instance name>\Reporting Services\ReportManager\Bin\ReportingServicesEmailDeliveryProvider.dll,错误消息可能暗示无法加载此文件。我相信这个文件在加载时会被复制到RSTempFiles 目录中。

如果您正在运行防病毒软件,您可能需要遵循 Microsoft 的指导方针 here 进行特定于 s-s-rS 的排除:

文件和目录排除

包含 Reporting Services 临时文件和日志(RSTempFiles 和 LogFiles)的目录

进程排除

%ProgramFiles%\Microsoft SQL Server\MSRS??.\Reporting Services\ReportServer\Bin\ReportingServicesService.exe

在我调查此问题的情况下,它是由横向扩展配置中的 DR 服务器未配置为进行电子邮件传递引起的。 DR 服务器大约有 1/3 的时间在处理订阅事件,因此错误是间歇性发生的。最初我没有想到要查看 DR 服务器,因为没有客户端访问它。

【讨论】:

【参考方案2】:

找到文件 rsreportserver.config(您的报表服务器安装中的文件)注释掉该行:

> <Extension Name="Report Server DocumentLibrary"
> Type="Microsoft.ReportingServices.SharePoint.SharePointDeliveryExtension.DocumentLibraryProvider,ReportingServicesSharePointDeliveryExtension">
>     <MaxRetries>3</MaxRetries>
>     <SecondsBeforeRetry>900</SecondsBeforeRetry>
>     <Configuration>
>      <DocumentLibraryConfiguration>
>       <ExcludedRenderFormats>
>        <RenderingExtension>HTMLOWC</RenderingExtension>
>        <RenderingExtension>NULL</RenderingExtension>
>        <RenderingExtension>RGDI</RenderingExtension>
>       </ExcludedRenderFormats>
>      </DocumentLibraryConfiguration>
>     </Configuration>    </Extension>

通过将其包装在 &lt;!-- --&gt; 中。重新启动/重新启动报告服务器服务。此错误应该会消失并报告任何特定的订阅错误(如果有)。

祝你好运。

【讨论】:

我刚刚进行了更改,到目前为止一切顺利 - 我将在接下来的几天内对其进行监控 - 感谢您的帮助,Jon!

以上是关于s-s-rS 2008 报告订阅电子邮件随机接收传递扩展加载错误的主要内容,如果未能解决你的问题,请参考以下文章

如何在 s-s-rS 订阅的主题行中包含报告参数?

s-s-rS 2008 R2 订阅

s-s-rS 订阅 - 如何查看所有报告收件人

我可以发送 s-s-rS 自定义订阅电子邮件吗?

使用 SSIS 2008 自动生成 s-s-rS 2008 报告

s-s-rS 订阅错误“呈现报告期间发生错误”