使用 PowerShell 更改 Power BI 报表中的数据源连接字符串 - Power BI 报表服务器
我们启用了对 DirectQuery 的 Power BI 报表的连接更新和刷新功能。
重要
这也是关于在之前版本中设置此功能的方式的一项重大更改。 如果使用的是 2020 年 10 月前的 Power BI 报表服务器版本,请参阅使用 PowerShell 更改 Power BI 报表中的数据源连接字符串 - Power BI 报表服务器(2020 年 10 月前)
先决条件
- 下载最新版本的 Power BI 报表服务器和适用于 Power BI 报表服务器的 Power BI Desktop。
- 使用针对 Power BI 报表服务器优化的 Power BI Desktop(2020 年 10 月版或更高版本)保存的报表(启用了增强型数据集元数据)。
- 使用参数化连接的报表。 发布后,只能更新使用参数化连接和数据库的报表。
- 此示例使用 Reporting Services PowerShell 工具。 使用新的 REST API 同样可以实现此目的。
创建使用参数化连接的报表
创建与服务器的 SQL Server 连接。 在下面的示例中,我们将连接到名为 ReportServer 的数据库,并从 ExecutionLog 拉取数据。
此时,M 查询将如下所示:
let Source = Sql.Database("localhost", "ReportServer"), dbo_ExecutionLog3 = Source{[Schema="dbo",Item="ExecutionLog3"]}[Data] in dbo_ExecutionLog3
选择“Power Query 编辑器”功能区中的“管理参数”。
为 servername 和 databasename 创建参数。
编辑第一个连接的查询,并映射数据库和 servername。
现在,查询将如下所示:
let Source = Sql.Database(ServerName, Databasename), dbo_ExecutionLog3 = Source{[Schema="dbo",Item="ExecutionLog3"]}[Data] in dbo_ExecutionLog3
- 将该报表发布到服务器。 在此示例中,报表名为 executionlogparameter。 下图是一个数据源管理页示例。
使用 PowerShell 工具更新参数
打开 PowerShell 并按照 https://github.com/microsoft/ReportingServicesTools 中的说明安装最新的 Reporting Services 工具。
若要获取报表的参数,请使用利用以下 PowerShell 调用的新 REST DataModelParameters API:
Get-RsRestItemDataModelParameters '/executionlogparameter' Name Value ---- ----- ServerName localhost Databasename ReportServer
将此调用的结果保存在变量中:
$parameters = Get-RsRestItemDataModelParameters '/executionlogparameter'
映射到字典以访问参数值。
$parameterdictionary = @{} foreach ($parameter in $parameters) { $parameterdictionary.Add($parameter.Name, $parameter); }
使用需要更改的值更新此变量。
更新所需参数的值:
$parameterdictionary[“ServerName”].Value = 'myproductionserver' $parameterdictionary[“Databasename”].Value = 'myproductiondatabase'
利用更新后的值,我们可以使用 commandlet
Set-RsRestItemDataModelParameters
来更新服务器中的值:Set-RsRestItemDataModelParameters -RsItem '/executionlogparameter' -DataModelParameters $parameters $parameterdictionary.Values
更新参数后,服务器将更新已绑定到参数的任何数据源。 返回到“编辑数据源”对话框中,你应能够为更新后的服务器和数据库设置凭据。
相关内容
更多问题? 尝试咨询 Power BI 社区