You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQL Server 2012中批量重发历史日期的SSRS订阅报表?

补发生成故障期间报表的可行方案

方案一:通过SSRS订阅配置指定历史日期

  • 打开Report Manager UI,定位到目标报表,进入订阅页面
  • 创建新订阅,选择邮件发送渠道(前提是SSRS已配置好邮件服务器)
  • 在参数设置步骤,把报表的日期参数指定为故障期间的具体范围(按天补送就单独设置每日日期)
  • 若需批量处理每日报表,可创建多份订阅对应不同日期;或者结合SQL Server代理作业,用参数化日期表达式循环执行

方案二:用rs.exe命令行工具批量生成发送

rs.exe是SSRS自带的命令行工具,适合批量处理:

  1. 编写VB脚本(比如命名为BatchReport.rss),脚本里定义报表路径、日期参数、收件人、邮件内容等
  2. 在脚本中循环遍历故障期间的所有日期,逐个生成报表并发送邮件
  3. 执行命令触发脚本:
rs.exe -i BatchReport.rss -s http://<你的新报表服务器地址>/ReportServer -u <用户名> -p <密码>

脚本核心逻辑示例:

Dim startDate As Date = #故障开始日期#
Dim endDate As Date = #故障结束日期#
Dim currentDate As Date = startDate

While currentDate <= endDate
    Dim params() As ParameterValue = {New ParameterValue() {Name="ReportDate", Value=currentDate.ToString("yyyy-MM-dd")}}
    '调用Render方法生成报表,再通过邮件组件发送
    currentDate = currentDate.AddDays(1)
End While

方案三:通过SSRS数据库手动创建历史订阅任务

SSRS的订阅数据存在ReportServer数据库中:

  • 备份ReportServer数据库后,查询Subscriptions表,找到现有正常订阅的记录
  • 复制该记录,修改Parameters字段替换为故障期间的日期参数,调整NextRunTime为对应日期
  • 保存修改后,SSRS代理会自动执行这条订阅任务

关于SQL Server 2012 SSRS的API说明

SQL Server 2012的SSRS没有官方REST API,它使用的是SOAP API。你可以访问报表服务器的/ReportServer/ReportService2010.asmx路径查看WSDL文档,基于这个文档编写代码或脚本调用订阅、渲染等操作。

内容的提问来源于stack exchange,提问作者Trevor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 14:10:11