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

如何批量查询135个SSRS报表的数据源?

通过SQL查询获取SSRS报表的数据源信息

当然可以直接查询SSRS的ReportServer数据库来批量获取报表对应的数据源,不需要逐个打开报表。以下是针对不同场景的查询语句:

1. 获取所有报表的数据源(含嵌入式+共享)

这个查询会区分报表使用的是嵌入式数据源还是共享数据源,并返回对应的关键信息:

SELECT
    c.Name AS ReportName,
    c.Path AS ReportPath,
    CASE 
        WHEN ds.Type = 1 THEN 'Embedded'
        WHEN ds.Type = 2 THEN 'Shared'
        ELSE 'Unknown'
    END AS DataSourceType,
    -- 嵌入式数据源连接字符串(截断显示,避免敏感信息暴露)
    CASE 
        WHEN ds.Type = 1 THEN LEFT(ds.ConnectionString, 50) + '...' 
        ELSE NULL 
    END AS EmbeddedConnectionString,
    -- 共享数据源的名称和路径
    CASE 
        WHEN ds.Type = 2 THEN sds.Name 
        ELSE NULL 
    END AS SharedDataSourceName,
    CASE 
        WHEN ds.Type = 2 THEN sds.Path 
        ELSE NULL 
    END AS SharedDataSourcePath
FROM
    Catalog c
JOIN
    DataSource ds ON c.ItemID = ds.ItemID
LEFT JOIN
    Catalog sds ON ds.Link = sds.ItemID
WHERE
    c.Type = 2 -- Type=2 代表SSRS报表对象
ORDER BY
    c.Path, c.Name;

2. 仅查询使用共享数据源的报表

如果只关注关联了共享数据源的报表,可以用这个更精简的查询:

SELECT
    c.Name AS ReportName,
    c.Path AS ReportPath,
    sds.Name AS SharedDataSourceName,
    sds.Path AS SharedDataSourcePath
FROM
    Catalog c
JOIN
    DataSource ds ON c.ItemID = ds.ItemID
JOIN
    Catalog sds ON ds.Link = sds.ItemID
WHERE
    c.Type = 2 -- 报表
    AND ds.Type = 2 -- 共享数据源
ORDER BY
    c.Path;

注意事项

  • 执行这些查询需要拥有ReportServer数据库的查询权限,通常由SSRS管理员分配
  • 嵌入式数据源的连接字符串中,敏感信息(如密码)会被SSRS加密存储,查询结果中不会显示明文密码
  • 如需过滤特定文件夹下的报表,可在WHERE子句中添加AND c.Path LIKE '/目标报表文件夹/%'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 11:25:33