使用 PowerShell 更改 Power BI 报表中的数据源连接字符串 - Power BI 报表服务器

我们支持更新用于 DirectQuery 和刷新的 Power BI 报表的连接。

重要

这也是有关如何在以前版本中设置此项的中断性变更。

先决条件

  • 下载 适用于 Power BI 报表服务器的 Power BI 报表服务器和 Power BI Desktop 的最新版本。
  • 与 2020 年 10 月或更高版本的 Power BI Desktop 一起保存的报表已针对报表服务器进行优化,启用了 增强型数据集元数据
  • 使用参数化连接的报表。 发布后,只能更新具有参数化连接和数据库的报表。
  • 此示例使用 Reporting Services PowerShell 工具。 可以使用新的 REST API 来实现相同的目的。

使用参数化连接创建报表

  1. 创建与服务器的 SQL Server 连接。 在下面的示例中,我们将连接到 localhost 到名为 ReportServer 的数据库,并从 ExecutionLog 拉取数据。

    连接到 SQL Server 数据库

    此时,M 查询如下所示:

    let
        Source = Sql.Database("localhost", "ReportServer"),
        dbo_ExecutionLog3 = Source{[Schema="dbo",Item="ExecutionLog3"]}[Data]
    in
        dbo_ExecutionLog3
    
  2. 在 Power Query 编辑器功能区中选择“ 管理参数 ”。

    选择“管理参数”

  3. 为 servername 和 databasename 创建参数。

    管理参数、设置服务器名称和数据库名称。

  4. 编辑第一个连接的查询,并映射数据库和服务器名称。

    映射服务器和数据库名称

    现在,查询如下所示:

    let
        Source = Sql.Database(ServerName, Databasename),
        dbo_ExecutionLog3 = Source{[Schema="dbo",Item="ExecutionLog3"]}[Data]
    in
        dbo_ExecutionLog3
    
    1. 将报表发布到服务器。 在此示例中,报表命名为 executionlogparameter。 下图是数据源管理页的示例。

    数据源管理页。

使用 PowerShell 工具更新参数

  1. 打开 PowerShell 并按照此处 https://github.com/microsoft/ReportingServicesTools的说明安装最新的 Reporting Services 工具。

  2. 若要获取报表的参数,请使用以下 PowerShell 调用的新 REST DataModelParameters API:

    Get-RsRestItemDataModelParameters '/executionlogparameter'
    
        Name         Value
        ----         -----
        ServerName   localhost
        Databasename ReportServer
    
  3. 我们将此调用的结果保存在变量中:

    $parameters = Get-RsRestItemDataModelParameters '/executionlogparameter'
    
  4. 映射到字典以访问参数值。

    $parameterdictionary = @{}
    foreach ($parameter in $parameters) { $parameterdictionary.Add($parameter.Name, $parameter); }
    
    
  5. 此变量使用我们需要更改的值进行更新。

  6. 更新所需参数的值:

    $parameterdictionary[“ServerName”].Value = 'myproductionserver'
    $parameterdictionary[“Databasename”].Value = 'myproductiondatabase'
    
  7. 使用更新的值,可以使用 commandlet Set-RsRestItemDataModelParameters 更新服务器中的值:

    Set-RsRestItemDataModelParameters -RsItem '/executionlogparameter' -DataModelParameters $parameters
    $parameterdictionary.Values
    
  8. 更新参数后,服务器将更新绑定到参数的任何数据源。 返回到“编辑数据源”对话框,即可设置更新的服务器和数据库凭据。

    为更新后的服务器和数据库设置凭据。

更多问题? 尝试咨询 Power BI 社区