SSRS 2008 报告订阅电子邮件随机收到传递扩展加载错误

发布于 2024-12-01 01:55:28 字数 291 浏览 2 评论 0原文

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

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

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

这不是 SSRS2008R2,而是 SSRS2008

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

有什么想法吗?

谢谢,

I have created 3 reports and have set up daily subscriptions for them to each be emailed to a list of recipients.

When I look at My Subscriptions, I see the message "The delivery extension for this subscription could not be loaded", and sometimes it even says that it was successfully emailed to the recipients.

Some of the reports get sent, but its random which ones I get.

This is not SSRS2008R2, it is SSRS2008

I have made sure that all of the email addresses are not aliases
I have made sure that the SMTP server allows relays from the Report Server
I have made sure that all of the email addresses are still active
I dont see errors in the logs.

Any ideas?

Thanks,

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

默嘫て 2024-12-08 01:55:28

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

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

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

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

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

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

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

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

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

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

3) 如果您在执行步骤 1 和 1 后仍然卡住; 2、在订阅运行时,可能值得使用 Sysinternals 的 Process Explorer 来监视文件系统和网络访问。电子邮件传递扩展 DLL 似乎为 C:\Program Files\Microsoft SQL Server\MSRS??.\Reporting Services\ReportManager\Bin\ReportingServicesEmailDeliveryProvider.dll,并且错误消息可能意味着无法加载该文件。我相信该文件在加载时会被复制到 RSTempFiles 目录中。

如果您正在运行防病毒软件,您可能需要遵循 Microsoft 的指南 此处了解 SSRS 特定的排除:

文件和目录排除

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

进程排除

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

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

The question is quite old, but the error message can still occur today in SQL Server 2014, and at the time of writing the highest-ranked search results for the error message are not particularly useful, nor do they contain any explanation of why the error would occur inconsistently.

Here are the steps I would follow to troubleshoot this problem:

1) Confirm email delivery is enabled for the SSRS instance (i.e. look at the 'Email Settings' section of Reporting Services Configuration Manager.

Note that if you have a scale-out configuration, email delivery needs to be enabled on every instance joined to the scale-out configuration, even if the instances aren't accessed by clients. The tasks for the subscription events will get balanced across the instances in the scale-out configuration even if you don't have any type of network-level load balancing set up. I'm unsure of the exact details of how the balancing works, but this post on blogs.msdn.com provides some details about how events are processed in SSRS:

When the subscription runs several things happen:

  • The SQL Server Agent job fires and puts a row in the Event table in the RS catalog with the settings necessary to process the subscription

  • The RS server service has a limited number of threads (2 per CPU) that poll the Event table every few seconds looking for subscriptions to process

  • When it finds an event, it puts a row in the Notifications table and starts processing the subscription, which includes executing the data driven subscription query (if present), processing the report, rendering it to the specified format (HTML, PDF, Excel etc), and delivering the final result to either an email address or a file share. Note that there will also be a row in the ExecutionLog table for the report execution.

2) Look in the SSRS error logs (typically in C:\Program Files\Microsoft SQL Server\MSRS??.<instance name>\Reporting Services\LogFiles). If you're running a scale-out config, you'll need to do this on each instance in the scale-out config; an error will only get logged by the instance that's failing to handle the subscription event.

By the way, if you run a SQL Server trace or extended events session against the SSRS database while the subscription fires, you should be able to see which SSRS instance is processing the subscription event and failing.

3) If you're still stuck after steps 1 & 2, it might be worth using Process Explorer from Sysinternals to monitor filesystem and network access while the subscription runs. The email delivery extension DLL appears to be C:\Program Files\Microsoft SQL Server\MSRS??.<instance name>\Reporting Services\ReportManager\Bin\ReportingServicesEmailDeliveryProvider.dll, and the error message could be implying that this file couldn't be loaded. I believe this file will get copied to the RSTempFiles directory when it is loaded.

If you're running antivirus software, you'll probably want to follow Microsoft's guidelines here for SSRS-specific exclusions:

File and Directory Exclusions

  • The directory that holds Reporting Services temporary files and Logs (RSTempFiles and LogFiles)

Process Exclusions

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

In the case I was looking into this the problem, it was caused by a DR server in the scale-out config not being configured for email delivery. The DR server was handling the subscription event roughly 1/3rd of the time, so the error was occurring intermittently. It didn't initially occur to me to look at the DR server as no clients were accessing it.

一页 2024-12-08 01:55:28

找到文件 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>

将其包装在 中。重新启动/重新引导报告服务器服务。此错误应该消失并报告任何特定的订阅错误(如果有)。

祝你好运。

Find the file rsreportserver.config (file within your report server installation) comment out the line:

> <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>

By wrapping it in <!-- -->. Restart / reboot the reporting server servies. This error should go away and report any specific subscription errors if there are any.

Good luck.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文