将报表数据源中的连接替换为报告服务工具



我们在SSRS解决方案中为 dev/prod/local 提供了不同的共享数据源连接。将报表部署到报表服务器时,我们需要将数据源替换为正确的数据源。例如,在开发报表时ds_local我正在使用共享连接,但在将其部署到开发服务器之前,我需要将其更改为 dev。没什么复杂的,但开发人员通常会忘记更新此连接并使用错误的数据源提交报表。我编写了powershell脚本,该脚本会自动将数据源替换为我们需要的数据源。为此,我需要编写相当多的代码,更新ReportServer数据库表等等。然后我找到了非常好的powershell模块,它实际上应该做我所做的一切,但方式要简单得多:RportingServicesTools。

它似乎工作正常,但我无法了解如何实现以下方案:

  1. 使用报表服务器上的路径+名称查找共享数据源;
  2. 将报表中使用的数据源替换为我从 #1 中获取的数据源

我发现了以下功能:Get-RsDataSourceSet-RsItemDataSource但据我现在了解,第一个只获取有关数据源的信息,第二个需要数据源对象。有没有办法将共享数据源作为数据源对象检索,或者我能做的唯一方法是手动创建新的数据源?

我想做类似的事情。我最终直接更新了rdl文件的XML。在您的情况下,我可能会下载 RDL 文件,更新 XML 并将其推回。我的情况有点不同,但这是我最终用来获取从供应商那里获得的一堆报告、更新数据源并将其上传到 SSRS 的代码。

#Install-Module -name ReportingServicesTools
$reportPath = "C:Pathtordls"
$dataSourceReference = "theNameoftheSharedDataSourceOnSSRS"
$rsFolder = "/Path/to/destination/folder/on/SSRS"
$rsURI = "https://SSRSsite/reportserver"

get-childitem -Path $reportPath -Filter *.rdl -Recurse | % {
$curItem = $_.FullName
$xml = [xml](get-content $curItem)
$xml.Report.DataSources.DataSource.DataSourceReference = $dataSourceReference
$xml.Save($curItem)
Write-RsFolderContent -Path $_.DirectoryName -RsFolder $rsFolder -ReportServerUri $rsURI -ErrorAction SilentlyContinue
Write-Output $_.FullName
}

还有Get-RSItemDataSource。它也许能够直接执行您尝试执行的操作。

最新更新