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

SSRS企业版数据驱动订阅配置:仅在有数据时发送报表

SSRS数据驱动订阅实现「有数据才发邮件」配置方案

核心思路

数据驱动订阅的触发逻辑是:如果驱动查询返回0行结果,订阅就不会执行发送操作;返回至少1行时,才会按查询返回的参数发送邮件。所以只要让驱动查询仅在存在未分配经理的新员工时,返回邮件组的配置信息即可。

1. 编写订阅驱动查询

假设你现有报表查询是SELECT * FROM NewEmployees WHERE ManagerID IS NULL,直接用以下SQL作为订阅的驱动查询:

-- 先检查是否有未分配经理的新员工
IF EXISTS (SELECT 1 FROM NewEmployees WHERE ManagerID IS NULL)
BEGIN
    -- 有数据时返回邮件配置信息,列名要和后续订阅映射对应
    SELECT 
        '未分配经理员工提醒组' AS DisplayName,
        'your-mail-group@company.com' AS ToEmail,
        '【提醒】存在未分配经理的新员工' AS Subject,
        'HTML' AS RenderFormat -- 可根据报表需求改成PDF/Excel等
END
  • 无符合条件的员工时,查询返回空结果集,订阅自动跳过发送
  • 列名可自定义,但要和后续订阅设置里的字段映射一一对应

2. 配置数据驱动订阅

在SSRS报表管理器操作:

  • 找到目标报表,右键选择「订阅」→「新建数据驱动订阅」
  • 数据源设置:选择能执行上述驱动查询的数据源(可复用报表本身的数据源)
  • 查询设置:粘贴驱动查询,点击「验证」确认逻辑正常(有数据返回1行,无数据返回0行)
  • 传递设置:选择「电子邮件」,将驱动查询的列映射到邮件参数:
    • 「收件人」映射到ToEmail列
    • 「主题」映射到Subject列(也可以固定写死主题)
    • 「渲染格式」映射到RenderFormat或直接选择固定格式
  • 报表参数:如果报表有参数,按需设置默认值或映射(你的场景大概率不需要额外参数)
  • 订阅计划:设置执行频率(比如每天早8点)

3. 验证逻辑

  • 测试1:手动插入一条未分配经理的新员工,等待订阅执行时间,确认邮件组收到报表
  • 测试2:删除所有未分配经理的员工,确认订阅执行后无邮件发出

注意事项

  • 确保SSRS服务账户有SMTP发送权限,且报表服务器已在配置管理器中完成邮件设置
  • 驱动查询的数据源账户需要有读取员工表的权限
  • 如需自定义邮件正文,可在驱动查询中新增Body列,返回HTML格式内容,然后在传递设置里映射到「消息」字段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 08:40:28