【问题标题】:Update/Change SSRS DataSource(Not Shared) Programmatically以编程方式更新/更改 SSRS 数据源(未共享)
【发布时间】:2017-06-19 10:57:26
【问题描述】:
我有 asp.net 应用程序,出于报告目的,我们使用 SSRS 报告。
SSRS 报告项目,我将 DataSource1 用于所有报告。 (考虑数据库名称:DB1)
如何以编程方式更改 DataSource1 的 ConnectionString 属性(这里我想将 DB1 更改为 DB2)?
【问题讨论】:
标签:
asp.net
reporting-services
ssrs-2008
ssrs-2008-r2
ssrs-2012
【解决方案1】:
由于数据源不共享,它们嵌入在报告 rdl 文件中,这些文件本质上是 XML 文件。可能最简单的方法是直接修改这些 xml。
根据报告的复杂性,可以通过简单的字符串替换来更改数据源,但更强大的解决方案是上下文更改
例如在 powershell 中使用 xml 库:
$Rdl = [xml] (gc -path "c:....path to report xx.rdl ...")
$Rdl.Report.DataSources.DataSource |
% {if ($_.GetAttribute("Name") -eq "DataSource1") {
NewDS = $._ConnectionProperties.ConnectString.Replace("DB1","DB2")
$._ConnectionProperties.ConnectString=$NewDS}
}
$Rdl.Save("c:....path to modified rdl ...")
此示例适用于 ssrs-2012,不确定数据源的 xpath 在其他版本中是否相同。