Das Datenbüro

Report Server

Report Server

Literatur:

https://docs.microsoft.com/en-us/power-bi/report-server/

Die on-premise Lösung.

Einschränkungen und Unterschied zu Service

Wichtig: Es gibt eine spezielle PBI Desktop Version für den Report Server. Die Version muss zu der Version des RS passen, ansonsten kann der Bericht nicht veröffentlicht werden.

Zugriffsrechte und Rolen:

Role definitions – predefined roles – SQL Server Reporting Services (SSRS) | Microsoft Docs

Kurze Beschreibung der REST API

Reporting Services Tools: https://github.com/Microsoft/ReportingServicesTools

pbirs | 2.0 | microsoft-rs | SwaggerHub PowerShell Commands for SSRS (mssqltips.com)

REST API

http://xeon/Reports/api/v2.0

Listet alle Reports: http://xeon/Reports/api/v2.0/PowerBIReports

new commands for SSRS API: in Powershell installieren Install-Module -Name ReportingServicesTools

Alle Module: Get-Command -Module ReportingServicesTools

neuer Ordner: New-RsFolder -ReportServerUri http://xeon/reports -Path / -Name Folder2 -Verbose

refresh:

# Declare URI

$reportServerUri = 'http://xeon/reports'

Start-RsRestCacheRefreshPlan -RSReport "/AdventureWorks" -ReportPortalUri $reportServerUri

Die Warnung „No XSRF Token detected! This might be due to XSRF token disabled“ kann ignoriert werden, da der XSRF Token nicht mehr verwendet wird.

Hier der Weg über einen Trigger im SQL Server:

Aufbau entsprechend https://towardsdatascience.com/game-changer-in-pbirs-setting-data-refresh-in-trigger-mode-62e594700b60

Beschreibung: Der PowerBi Bericht TriggerReport verwendet die Tabelle TriggerRefreshTest als Datenquelle.

Ein insert in die Tabelle „TriggerRefreshTest“ löst den Trigger aus, der dann in dem Bericht „TriggerReport“ einen EventType=’DataModelRefresh‘ startet.

Ablauf wurde auf einem Demosystem erfolgreich getestet.

Script für den Trigger:

-- ================================================
-- Template generated from Template Explorer using:
-- Create Trigger (New Menu).SQL
--
-- Use the Specify Values for Template Parameters 
-- command (Ctrl-Shift-M) to fill in the parameter 
-- values below.
--
-- See additional Create Trigger templates for more
-- examples of different Trigger statements.
--
-- This block of comments will not be included in
-- the definition of the function.
-- ================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

IF OBJECT_ID
(
    N'trigger_data_refresh'
) is not null
DROP TRIGGER trigger_data_refresh;
GO

-- =============================================
-- Author:      <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE TRIGGER trigger_data_refresh 
ON [Rechnungen]  --Replace with your table name here
AFTER INSERT
AS 
SET NOCOUNT ON;
DECLARE @REPORT_NAME NVARCHAR
(
    50
),
@REPORT_ID VARCHAR
(
    100
),
@SUBSCRIPTION_ID VARCHAR
(
    100
)
SET @REPORT_NAME = 'TriggerTest' --Replace with your PBI report name.
SET @REPORT_ID = 
(
    SELECT TOP 1 [ItemID]
    FROM [ReportServer].[dbo].[Catalog]
    WHERE [Name] = @REPORT_NAME
)
SET @SUBSCRIPTION_ID = 
(
    SELECT TOP 1 SubscriptionID
    FROM [ReportServer].[dbo].[ReportSchedule]
    WHERE [ReportID] = @REPORT_ID
)
BEGIN
WAITFOR DELAY '0:0:3'
exec [ReportServer].dbo.AddEvent 
@EventType='DataModelRefresh',
@EventData=@SUBSCRIPTION_ID
END
GO