【问题标题】:SSRS - Renamed TempDB and now Subscription Reports not EmailingSSRS - 重命名 TempDB,现在订阅报告不通过电子邮件发送
【发布时间】:2013-10-22 01:42:05
【问题描述】:

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

我在 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 连接无效 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 迁移的,这是由第三方完成的,我不确定是否忽略了某些内容。

任何帮助将不胜感激。

谢谢。

丹麦人

【问题讨论】:

  • 你有没有尝试过或者只是在这里转储你的错误信息?
  • 我很抱歉没有添加我在该问题上找到的信息的参考,但是我花时间寻找解决方案。对SSRS和我在这里发布的类似内容不太了解,希望有人可以提供一些指导。

标签: sql sql-server reporting-services sql-server-2012 database-migration


【解决方案1】:

这个帖子似乎解决了你的问题。

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

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

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

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

  • 更新了 dbo.schedule 上的触发器以引用正确的 tempdb。
  • 将所有具有权限的存储过程编写到新查询上,然后用新的“查找并替换”旧 tempdb 的所有实例。 "

【讨论】:

  • 谢谢。根据上述内容,我确实在发布之前看到了我能找到的内容。
  • 没问题,我的反应比预期的要好,我很抱歉。关于如何/问什么有非常具体的指导方针,因为它让每个人的生活更轻松。很高兴解决方案有所帮助。
  • 工作。谢谢。
  • 在 SQL 2019 中仍然相关
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    Daniel E. 答案是正确的。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-08
      • 1970-01-01
      • 2015-12-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-06
      • 2010-10-02
      相关资源
      最近更新 更多