使用 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 同样可以实现此目的。

创建使用参数化连接的报表

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

    Connect to the SQL Server database

    此时,M 查询将如下所示:

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

    Select Manage Parameters

  3. 为 servername 和 databasename 创建参数。

    Manage Parameters, set servername and databasename.

  4. 编辑第一个连接的查询,并映射数据库和 servername。

    Map the Server and Database name

    现在,查询将如下所示:

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

    The data source management page.

使用 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. 更新参数后,服务器将更新已绑定到参数的任何数据源。 返回到“编辑数据源”对话框中,你应能够为更新后的服务器和数据库设置凭据。

    Set credentials for the updated server and database.

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