数据驱动订阅连接超时
我有一个数据驱动的订阅,每次运行时都会在报告管理器中显示“待处理”状态。然后过了一会儿它就出错了
错误:超时已过。超时 完成之前已过去的一段时间 操作或服务器不正常 回应。该声明已 终止。
我在这里并没有做什么特别的事情。我用于检索用户的存储过程仅返回 2 条记录(并在 Management studio 中立即执行)。报告的数据也没什么奇特的。它从 3 个数据源中提取大约 3 条记录 - 所有这些都基于通过参数传入的 ID 进行非常简单的选择。
当我设置此报告以定期订阅发送时,效果很好。只有当我使其成为数据驱动时,它才会超时。
我的配置中的超时设置为默认值(120 秒)。
这是日志所说的。
ReportingServicesService!dbpolling!4!12/20/2010-14:52:03:: EventPolling processing item 3c45f091-aab6-4354-bd1e-e5a8a8103391
ReportingServicesService!dbpolling!c!12/20/2010-14:52:03:: EventPolling processing 1 more items. 1 Total items in internal queue.
ReportingServicesService!library!4!12/20/2010-14:52:03:: Schedule fc2dd7c4-ae29-4e20-a24f-e6d7ee04686d executed at 12/20/2010 2:52:03 PM.
ReportingServicesService!schedule!4!12/20/2010-14:52:03:: Creating Time based subscription notification for subscription: 8a70b89a-bcea-403a-a200-ed0b6e4bc4ab
ReportingServicesService!library!4!12/20/2010-14:52:03:: Schedule fc2dd7c4-ae29-4e20-a24f-e6d7ee04686d execution completed at 12/20/2010 2:52:03 PM.
ReportingServicesService!dbpolling!4!12/20/2010-14:52:03:: EventPolling finished processing item 3c45f091-aab6-4354-bd1e-e5a8a8103391
ReportingServicesService!dbpolling!4!12/20/2010-14:52:03:: EventPolling processing item 63c3c8af-b3e5-4822-bb17-73f5f1b9fecc
ReportingServicesService!dbpolling!c!12/20/2010-14:52:03:: EventPolling processing 1 more items. 1 Total items in internal queue.
ReportingServicesService!dbpolling!4!12/20/2010-14:52:03:: EventPolling finished processing item 63c3c8af-b3e5-4822-bb17-73f5f1b9fecc
ReportingServicesService!library!d!12/20/2010-14:52:33:: e ERROR: Error processing data driven subscription: System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
The statement has been terminated.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
at System.Data.SqlClient.SqlDataReader.get_MetaData()
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
at Microsoft.ReportingServices.DataExtensions.SqlCommandWrapperExtension.ExecuteReader(CommandBehavior behavior)
at Microsoft.ReportingServices.Library.DataDrivenSubscriptionHandler.DataDrivenSubscriptionWorker(Object o)
我尝试使用本地管理员帐户(也是 sa)创建一个新的数据源,但仍然超时。这份报告没什么特别的。它实际上只是带有少量数据的格式化文本。我正在使用 SSRS 来处理发送格式化电子邮件。我唯一担心的是运行 SSRS 的机器只有 2.0 GB 内存。这会导致超时吗?但是为什么当我为一个用户执行报告时,一切都很好,但对于 2 个用户,它就变得卡布卢伊了?
I have a data driven subscription which each time it runs shows a "pending" status in the Report Manager. Then after a little bit it errors with
Error: Timeout expired. The timeout
period elapsed prior to completion of
the operation or the server is not
responding. The statement has been
terminated.
I am not doing anything extraordinary here. My sproc for retrieving users only returns 2 records (and executes instantly in Management studio). The data for the report isn't anything fancy either. It's pulling in about 3 records from 3 data sources - all very straightforward selects based on the ID passed in through the parameters.
When I set up this report to send in a regular subscription, it works fine. It's only when I make it data driven that it times out.
The timeout in my config is set to the default (120 seconds).
Here's what the logs are saying.
ReportingServicesService!dbpolling!4!12/20/2010-14:52:03:: EventPolling processing item 3c45f091-aab6-4354-bd1e-e5a8a8103391
ReportingServicesService!dbpolling!c!12/20/2010-14:52:03:: EventPolling processing 1 more items. 1 Total items in internal queue.
ReportingServicesService!library!4!12/20/2010-14:52:03:: Schedule fc2dd7c4-ae29-4e20-a24f-e6d7ee04686d executed at 12/20/2010 2:52:03 PM.
ReportingServicesService!schedule!4!12/20/2010-14:52:03:: Creating Time based subscription notification for subscription: 8a70b89a-bcea-403a-a200-ed0b6e4bc4ab
ReportingServicesService!library!4!12/20/2010-14:52:03:: Schedule fc2dd7c4-ae29-4e20-a24f-e6d7ee04686d execution completed at 12/20/2010 2:52:03 PM.
ReportingServicesService!dbpolling!4!12/20/2010-14:52:03:: EventPolling finished processing item 3c45f091-aab6-4354-bd1e-e5a8a8103391
ReportingServicesService!dbpolling!4!12/20/2010-14:52:03:: EventPolling processing item 63c3c8af-b3e5-4822-bb17-73f5f1b9fecc
ReportingServicesService!dbpolling!c!12/20/2010-14:52:03:: EventPolling processing 1 more items. 1 Total items in internal queue.
ReportingServicesService!dbpolling!4!12/20/2010-14:52:03:: EventPolling finished processing item 63c3c8af-b3e5-4822-bb17-73f5f1b9fecc
ReportingServicesService!library!d!12/20/2010-14:52:33:: e ERROR: Error processing data driven subscription: System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
The statement has been terminated.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
at System.Data.SqlClient.SqlDataReader.get_MetaData()
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
at Microsoft.ReportingServices.DataExtensions.SqlCommandWrapperExtension.ExecuteReader(CommandBehavior behavior)
at Microsoft.ReportingServices.Library.DataDrivenSubscriptionHandler.DataDrivenSubscriptionWorker(Object o)
I tried making a new data source using the local administrator account (who is also the sa) and I still get the timeout. This report is nothing special. It's actually just formatted text with little pieces of data. I'm using SSRS to handle sending formatted e-mails. The only concern I do have is that the machine running SSRS only has 2.0 GB ram. Could that be causing the timeout? But then why is it that when I execute the report for one user, it's fine, but for 2 users it goes kablooey?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您能否在数据库服务器上设置跟踪来查看您是否'数据源服务器上出现意外情况?
您还可以在 perfmon 中监视 IIS 进程使用的内存,但根据您的描述,我认为您的服务器可以生成此报告。但是,也许您正在生成一个巨大的 PDF? SQL 2005 在执行此类操作时可能会遇到困难。
Can you set up a trace on the database servers to see if you're getting something unexpected on the data source servers?
You can also monitor the memory being used by the IIS process in perfmon, but from what you describe, I would think your server could make this report. BUT, maybe you're generating a massive PDF? SQL 2005 can have trouble doing such things.
我找到的解决方案是此处。我将订阅和报告数据源设置为使用经过 Windows 身份验证的用户,以便报告可以在无人值守的情况下运行。在 BIDS 和报表管理器中工作的默认数据源未设置为允许无人值守的报表运行。
The solution I found was here. I set up both the subscription and report data source to use a windows authenticated user so that the report could be run unattended. The default data source that worked in BIDS and in the Report Manager were not set up to allow unattended report runs.