Dela via


Ändra datakällans anslutningssträng i Power BI-rapporter med PowerShell – Power BI-rapportserver

Vi gör det möjligt att uppdatera anslutningar för Power BI-rapporter för DirectQuery och uppdatera.

Viktigt!

Det här är också en icke-bakåtkompatibel ändring av hur du kan konfigurera detta i tidigare versioner. Om du använder en version av Power BI-rapportserver före oktober 2020 läser du Ändra anslutningssträng för datakällor i Power BI-rapporter med PowerShell – Power BI-rapportserver före oktober 2020

Förutsättningar

  • Ladda ned den senaste versionen av Power BI-rapportserver och Power BI Desktop för Power BI-rapportserver.
  • En rapport som sparats med oktober 2020 eller senare versionen av Power BI Desktop optimerad för rapportserver, med utökade datauppsättningsmetadata aktiverade.
  • En rapport som använder parametriserade anslutningar. Endast rapporter med parametriserade anslutningar och databaser kan uppdateras efter publiceringen.
  • I det här exemplet används PowerShell-verktygen för Reporting Services. Du kan uppnå samma sak med hjälp av de nya REST-API:erna.

Skapa en rapport med parametriserade anslutningar

  1. Skapa en SQL Server-anslutning till en server. I exemplet nedan ansluter vi till localhost till en databas med namnet ReportServer och hämtar data från ExecutionLog.

    Connect to the SQL Server database

    Så här ser M-frågan ut just nu:

    let
        Source = Sql.Database("localhost", "ReportServer"),
        dbo_ExecutionLog3 = Source{[Schema="dbo",Item="ExecutionLog3"]}[Data]
    in
        dbo_ExecutionLog3
    
  2. Välj Hantera parametrar i menyfliksområdet Power Query-redigeraren.

    Select Manage Parameters

  3. Skapa parametrar för servernamn och databasnamn.

    Manage Parameters, set servername and databasename.

  4. Redigera frågan för den första anslutningen och mappa databasen och servernamnet.

    Map the Server and Database name

    Nu ser frågan ut så här:

    let
        Source = Sql.Database(ServerName, Databasename),
        dbo_ExecutionLog3 = Source{[Schema="dbo",Item="ExecutionLog3"]}[Data]
    in
        dbo_ExecutionLog3
    
    1. Publicera rapporten på servern. I det här exemplet heter rapporten executionlogparameter. Följande bild är ett exempel på en sida för hantering av datakällor.

    The data source management page.

Uppdatera parametrar med hjälp av PowerShell-verktygen

  1. Öppna PowerShell och installera de senaste Reporting Services-verktygen enligt anvisningarna på https://github.com/microsoft/ReportingServicesTools.

  2. Om du vill hämta parametern för rapporten använder du det nya REST DataModelParameters-API:et med följande PowerShell-anrop:

    Get-RsRestItemDataModelParameters '/executionlogparameter'
    
        Name         Value
        ----         -----
        ServerName   localhost
        Databasename ReportServer
    
  3. Vi sparar resultatet av det här anropet i en variabel:

    $parameters = Get-RsRestItemDataModelParameters '/executionlogparameter'
    
  4. Mappa till en ordlista för att komma åt parametervärdena.

    $parameterdictionary = @{}
    foreach ($parameter in $parameters) { $parameterdictionary.Add($parameter.Name, $parameter); }
    
    
  5. Den här variabeln uppdateras med de värden som vi behöver ändra.

  6. Uppdatera värdena för de önskade parametrarna:

    $parameterdictionary[“ServerName”].Value = 'myproductionserver'
    $parameterdictionary[“Databasename”].Value = 'myproductiondatabase'
    
  7. Med de uppdaterade värdena kan vi använda kommandoleten Set-RsRestItemDataModelParameters för att uppdatera värdena på servern:

    Set-RsRestItemDataModelParameters -RsItem '/executionlogparameter' -DataModelParameters $parameters
    $parameterdictionary.Values
    
  8. När parametrarna har uppdaterats uppdaterar servern alla datakällor som var bundna till parametrarna. Om du går tillbaka till dialogrutan Redigera datakälla bör du kunna ange autentiseringsuppgifter för den uppdaterade servern och databasen.

    Set credentials for the updated server and database.

Har du fler frågor? Prova att fråga Power BI Community