【发布时间】:2015-07-13 14:12:18
【问题描述】:
我们计划在一周内生成大量报告。一些报告也设置为代理作业报告,并使用 SP_send_dbmail 以 HTML 格式发送报告。在过去一周左右的时间里,多份报告未能发送,而其他报告则在同一天完成。这是一个间歇性问题,因为有些日子所有报告似乎都通过了,但我没有任何警报通知我报告失败。
我从 \Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\LogFiles 查看了报告服务器的日志文件; 此错误消息经常出现:
ERROR: PollingMaintenance: Restarting maintenance thread for the following exception: This method or property cannot be called on Null values.
at System.Data.SqlClient.SqlBuffer.get_String()
at Microsoft.ReportingServices.Library.InstrumentedSqlDataReader.<>c__DisplayClass3d.<GetString>b__3c()
at Microsoft.ReportingServices.Library.SqlBoundaryWithReturn`1.Invoke(Method m)
at Microsoft.ReportingServices.Library.EventQueueWorker.GetNextQueueItem(IDataRecord record)
at Microsoft.ReportingServices.Library.QueuePollWorker.ProcessData(IDataReader reader)
at Microsoft.ReportingServices.Library.DBPoll.PollingFunction()
at Microsoft.ReportingServices.Library.DBPoll.PollingMaintenance().
library!WindowsService_827!8d4!07/10/2015-05:54:19:: i INFO: PollingMaintenance: Polling cycle completed.
除此之外,我在 LastStatus 下的 ExecutionLogStorage 表中没有看到任何有用的信息(只是在几条记录上说 rsProcessAborted)。
我还尝试运行此查询来查找失败的报告,但今天失败的报告没有出现:
SELECT
c.Name AS [ReportName],
sb.[Description] AS [SubscriptionDescription],
sb.DeliveryExtension AS [DeliveryType],
sb.LastStatus AS [LastRunStatus],
sb.LastRunTime AS [LastRunTime],
c.Path AS [ReportPath],
'http://sql-server/Reports/Pages/Report.aspx?ItemPath='+REPLACE(REPLACE(C.[Path],'/','%2f'),' ','+')+'&SelectedTabId=PropertiesTab&ViewMode=List&SelectedSubTabId=SubscriptionsTab' AS [SubscriptionLink],
sc.ScheduleID AS [SQLAgentJobName],
sb.SubscriptionID
FROM
ReportServer.dbo.ReportSchedule AS RS
INNER JOIN ReportServer.dbo.Schedule sc ON rs.ScheduleID = sc.ScheduleID
INNER JOIN ReportServer.dbo.Subscriptions sb ON rs.SubscriptionID = sb.SubscriptionID
INNER JOIN ReportServer.dbo.[Catalog] c ON rs.ReportID = c.ItemID AND sb.Report_OID = c.ItemID
WHERE
(sb.LastStatus LIKE 'Failure%' OR sb.LastStatus LIKE 'Error%' OR sb.LastStatus LIKE '%not valid%')
order by lastruntime asc
【问题讨论】:
-
嘿,感谢您的评论。我检查了该线程回复中的链接,但它似乎与我的问题无关。唯一的共同点是提到“这可能是由于数据库中的连接失败、超时或磁盘条件低”的错误,但与我在上面发布的其他 1 个相比,该错误只出现了几次。今天上午 10 点 09 分预定了多份订阅的报告,但没有一个通过;我检查了该工作的代理工作历史记录,它显示成功...
-
我正在运行简单的批处理文件来记录 ping 时丢弃的任何数据包...我正在从我的网络和托管我们的 SQL 服务器的网络测试它(从我的计算机和从 SQL ping 我们的邮件服务器)如果出现任何问题,将会更新。
-
@samalkobi - 报告的参数是什么,您在订阅中将哪些值传递给它?
-
你检查过收件人的垃圾邮件吗?由于电子邮件已嵌入 HTML,因此可能会被标记为垃圾邮件。
标签: sql-server-2008 reporting-services ssrs-2008-r2