我目前无法在服务器2012上的新SQL Server 2012安装上通过电子邮件发送SSRS的基于时间的订阅报告。
我在SSRS LogFiles中收到以下错误
日程安排!WindowsService_5!dc4!10/14 / 2013-10:01:09 :: i INFO:使用数据1a762da1-75ab-4c46-b989-471185553304处理事件TimedSubscription。 library!WindowsService_5!dc4!10/14 / 2013-10:01:09 :: e错误:抛出Microsoft.ReportingServices.Diagnostics.Utilities.ReportServerStorageException :,报表服务器数据库中发生错误。这可能是由于数据库中的连接失败,超时或磁盘状况不佳所致。 library!WindowsService_5!dc4!10/14 / 2013-10:01:09 :: w WARN:未执行事务回滚连接无效 计划!WindowsService_5!dc4!10/14 / 2013-10:01:09 :: i INFO:处理事件'TimedSubscription'时出错,数据= 1a762da1-75ab-4c46-b989-471185553304,错误= Microsoft.ReportingServices.Diagnostics.Utilities .ReportServerStorageException:报表服务器数据库中发生错误。这可能是由于数据库中的连接失败,超时或磁盘状况不佳所致。 ---> System.Data.SqlClient.SqlException:无效的对象名称'ReportServerTempDB.dbo.ExecutionCache'。
数据库是从SQL 2008迁移出来的,这是由第三方完成的,我不确定是否有人被忽视了。
非常感谢任何协助。
谢谢。
丹麦人
答案 0 :(得分:1)
此主题似乎解决了您的问题。
http://www.sqlservercentral.com/Forums/Topic553765-147-1.aspx
请在发布错误消息之前进行一些研究。
来自链接 “ 经过多次惊愕,我找到了一个引用无效对象的触发器。在ReportServer表上触发[Schedule_UpdateExpiration] Schedule中包含违规引用。在测试中,我更改了此触发器以引用正确的报表服务器tempdb,现在订阅似乎正常工作。到目前为止,我没有发现任何其他因素。“
和
“如果有人正在寻找快速答案,那么我就是为解决问题所做的:
答案 1 :(得分:1)
在搜索解决方案以解决此问题一段时间后,我发现这是由SQL Server代理的作业定义未完全迁移到新服务引起的。对于在SSRS中创建的每个订阅,SQL Server代理中都定义了一个关联的作业。对于服务通过订阅大量回复报告传递,最好导出这些作业定义并将其导入新服务器。
答案 2 :(得分:0)
Daniel E.回答是正确的。
我花了很多时间来查找它以及我在更新现有订阅时遇到的错误
“报表服务器数据库中发生错误。这可能是由于数据库中的连接失败,超时或磁盘状况不佳所致。 (rsReportServerDatabaseError)”
当我使用上述错误在线搜索时,我无法设法修复它。很长一段时间后,我发现跳跳手指向旧数据库。 Temp数据库如下:[ReportServerTempDB] 更新到正确的tempDB之后,一切正常。
ALTER TRIGGER [dbo].[Schedule_UpdateExpiration] ON [dbo].[Schedule]
AFTER UPDATE
AS
UPDATE
EC
SET
AbsoluteExpiration = I.NextRunTime
FROM
[ReportServerTempDB].dbo.ExecutionCache AS EC
INNER JOIN ReportSchedule AS RS ON EC.ReportID = RS.ReportID
INNER JOIN inserted AS I ON RS.ScheduleID = I.ScheduleID AND RS.ReportAction = 3