2

我目前无法通过电子邮件发送来自 SSRS 在 Server 2012 上安装新 SQL Server 2012 的基于时间的订阅报告。

我在 SSRS 日志文件中收到以下错误

schedule!WindowsService_5!dc4!10/14/2013-10:01:09::i 信息:使用数据 1a762da1-75ab-4c46-b989-471185553304 处理事件 TimedSubscription。library!WindowsService_5!dc4!10/14/2013-10:01:09:: e ERROR: Throwing Microsoft.ReportingServices.Diagnostics.Utilities.ReportServerStorageException: ,报表服务器数据库中发生错误。这可能是由于数据库中的连接失败、超时或磁盘不足造成的。library!WindowsService_5!dc4!10/14/2013-10:01:09::w WARN: Transaction rollback was not executed connection is invalid schedule!WindowsService_5!dc4!10/14/2013-10:01:09:: i信息:处理事件“TimedSubscription”时出错,数据 = 1a762da1-75ab-4c46-b989-471185553304,错误 = Microsoft.ReportingServices.Diagnostics.Utilities.ReportServerStorageException:报表服务器数据库中发生错误。这可能是由于数据库中的连接失败、超时或磁盘不足造成的。---> System.Data.SqlClient.SqlException:对象名称“ReportServerTempDB.dbo.ExecutionCache”无效。

数据库是从 SQL 2008 迁移的,这是由第三方完成的,我不确定是否忽略了某些内容。

任何帮助将不胜感激。

谢谢你。

丹麦人

4

3 回答 3

2

该线程似乎解决了您的问题。

http://www.sqlservercentral.com/Forums/Topic553765-147-1.aspx

在发布错误消息之前,请做一些研究。

从链接“经过一番惊愕后,我发现了一个引用无效对象的触发器。在 ReportServer 表上的触发器 [Schedule_UpdateExpiration] Schedule 中有违规引用。在测试中,我更改了此触发器以引用正确的报表服务器 tempdb,现在订阅似乎工作正常。到目前为止,我没有发现其他任何问题。

“如果有人正在寻找一个快速的答案,那么这就是我为解决我的问题所做的:

  • 更新了 dbo.schedule 上的触发器以引用正确的 tempdb。
  • 将所有具有权限的存储过程编写到新查询上,然后用新的“查找并替换”旧 tempdb 的所有实例。"
于 2013-10-14T15:19:40.353 回答
1

经过一段时间寻找解决此问题的解决方案后,我发现这是由于 SQL Server Agent 的作业定义未完全迁移到新服务所致。对于在 SSRS 中创建的每个订阅,在 SQL Server 代理中定义了一个关联的作业。对于通过订阅大量依赖报告交付的服务,最好导出这些作业定义并将它们导入新服务器。

于 2016-12-28T17:11:56.830 回答
0

Daniel E. 答案是正确的。

我花了很多时间来找到它以及更新现有订阅时遇到的错误

“报表服务器数据库中发生错误。这可能是由于数据库中的连接失败、超时或磁盘不足造成的。(rsReportServerDatabaseError)”</p>

当我在网上搜索上述错误时,我无法修复它。很长一段时间后,我发现跳跳虎指向旧数据库。下面的临时数据库:[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
于 2015-09-10T15:11:54.513 回答