我们支持更新用于 DirectQuery 和刷新的 Power BI 报表的连接。
重要
这也是有关如何在以前版本中设置此项的中断性变更。
先决条件
- 下载 适用于 Power BI 报表服务器的 Power BI 报表服务器和 Power BI Desktop 的最新版本。
- 与 2020 年 10 月或更高版本的 Power BI Desktop 一起保存的报表已针对报表服务器进行优化,启用了 增强型数据集元数据 。
- 使用参数化连接的报表。 发布后,只能更新具有参数化连接和数据库的报表。
- 此示例使用 Reporting Services PowerShell 工具。 可以使用新的 REST API 来实现相同的目的。
使用参数化连接创建报表
创建与服务器的 SQL Server 连接。 在下面的示例中,我们将连接到 localhost 到名为 ReportServer 的数据库,并从 ExecutionLog 拉取数据。
此时,M 查询如下所示:
let Source = Sql.Database("localhost", "ReportServer"), dbo_ExecutionLog3 = Source{[Schema="dbo",Item="ExecutionLog3"]}[Data] in dbo_ExecutionLog3在 Power Query 编辑器功能区中选择“ 管理参数 ”。
为 servername 和 databasename 创建参数。
编辑第一个连接的查询,并映射数据库和服务器名称。
现在,查询如下所示:
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 社区