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

如何通过SSRS REST API将部署的报表关联至预定义共享数据源?

解决方案:通过SSRS REST API关联报表到预定义共享数据源

要关联报表到已存在的共享数据源,正确方式是使用PUT Reports({Id})/DataSources端点,但需要构造针对共享数据源的请求体,而非嵌入式数据源格式。以下是具体步骤和PowerShell实现:

1. 获取共享数据源的标识

你可以通过SSRS REST API的GET DataSources端点查询目标共享数据源的Id,或直接使用其在报表服务器上的路径(格式为/DataSources('Folder/SharedDataSourceName')),路径方式更直观。

2. 构造正确的请求体

请求体需明确指定数据源类型为共享,并引用目标共享数据源的标识,示例JSON结构如下:

{
  "DataSources": [
    {
      "Name": "报表中定义的数据源名称",
      "DataSourceReference": "/DataSources('SharedDataSources/MySharedDS')"
    }
  ]
}

注意:Name必须与报表RDLC文件中定义的数据源名称完全一致,DataSourceReference是共享数据源在服务器上的完整路径引用。

3. PowerShell调用示例

$ssrsBaseUrl = "http://your-ssrs-server/Reports/api/v2.0"
$reportId = "Reports('MyReports/DeployedReport')" # 也可使用报表的GUID
$headers = @{
    "Authorization" = "Bearer $accessToken" # AD认证可改用UseDefaultCredentials
}

$requestBody = @{
    DataSources = @(
        @{
            Name = "ReportDataSourceName"
            DataSourceReference = "/DataSources('SharedDS/MySharedDataSource')"
        }
    )
} | ConvertTo-Json

Invoke-RestMethod -Uri "$ssrsBaseUrl/$reportId/DataSources" -Method Put -Headers $headers -Body $requestBody -ContentType "application/json"

常见问题说明

  • PATCH /Reports({id})/Properties和PUT /Reports({id})/Properties端点仅用于修改报表基础属性(如名称、描述、隐藏状态等),不支持关联数据源,因此返回405/400错误是预期行为。
  • 若PUT Reports({Id})/DataSources仍报错,检查以下几点:
    • 报表中的数据源名称与请求体Name完全匹配
    • 共享数据源的路径引用格式正确(注意单引号和斜杠)
    • 调用API的账号拥有修改报表数据源的权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 04:17:39