SSRSDeploymentTool · v4.0 · 2026

SSRS Deployment
Tool

.rdl, .rds, .rsds deployen. Power BI Report Server. Migration.

PowerShell 5.1 WinForms GUI SSRS REST API v2.0 Windows Auth

Uwe Janke · Senior IT-Spezialist · SQL Server & PowerShell Automation

SSRSDeploymentTool v4.0.0
Deploy
Migration
Server URL http://ssrs-server/Reports Verbinden
[x] .rdl [x] .rds [x] .rsds [x] .pbix
Report1.rdl .rdl UPDATED
Dashboard.pbix .pbix CREATED
DataSource.rds .rds UPDATED
Zielordner /Finanzen/Controlling
► Deployen

Uebersicht

Was ist das Tool?

Deployt SSRS-Berichte (.rdl, .rds, .rsds) von lokalen Dateien auf SSRS- oder PBIRS-Server via REST API. WinForms-GUI - kein Kommandozeilen-Wissen erforderlich.

Merkmal v3.x v3 v4.0.0 NEU
Datei-Typen .rdl / .rds / .rsds .rdl / .rds / .rsds / .pbix
Power BI Deploy nein ja - PBIRS multipart POST
Server-Erkennung manuell PBIRS Auto-Detection via API
Migration nein SSRS → PBIRS (neuer Tab)
GUI 1 Tab 2 Tabs: Deploy + Migration
Codeumfang 1.012 Zeilen 1.526 Zeilen
Wird ausgebaut, nicht neu geschrieben - alle v3-Funktionen bleiben unveraendert erhalten.

Datei-Typen

Unterstützte Formate

📄

.rdl

Report Definition Language. Paginierte Berichte. SSRS und PBIRS.

🔌

.rds / .rsds

Data Source / Shared Dataset. Verbindungsdefinitionen und wiederverwendbare Datenbasis.

.pbix NEU

Power BI Desktop Report. Nur PBIRS. Interaktive Dashboards und Analysen.

Format SSRS (klassisch) PBIRS (Power BI Report Server) Deploy-Methode
.rdl PUT /Reports/api/v2.0/Reports
.rds PUT /Reports/api/v2.0/Data­Sources
.rsds PUT /Reports/api/v2.0/Data­Sets
.pbix ✗ nicht unterstuetzt POST /Reports/api/v2.0/Power­BIReports
Bei reinem SSRS: .pbix-Steuerelemente sichtbar aber ausgegraut (SKIP statt Error).

Neue Funktionen v4.0

PBIRS-Erkennung & .pbix Deploy NEU

Auto-Detection: SSRS oder PBIRS?

# 1. System-Endpunkt abfragen
GET /Reports/api/v2.0/System

# Antwort bei PBIRS:
{
  "ProductName": "Microsoft Power BI
               Report Server",
  "ProductVersion": "15.0.1115.93"
}

# Antwort bei SSRS:
{
  "ProductName": "Microsoft SQL Server
               Reporting Services"
}

.pbix Deploy via multipart POST

# 2. Power BI Report hochladen
POST /Reports/api/v2.0/PowerBIReports
Content-Type: multipart/form-data

Body:
  file = <pbix-Binaerinhalt>

# PowerShell-Implementierung:
$client = [System.Net.Http.HttpClient]::new()
$content = [System.Net.Http.
  MultipartFormDataContent]::new()
$bytes = [System.IO.File]::ReadAllBytes(
  $pbixPath)
$content.Add($byteContent, "file",
  $fileName)
Under the Hood: System.Net.Http.HttpClient + MultipartFormDataContent - PS 5.1 kompatibel, kein Add-Type erforderlich.
PBIRS-Lizenz-Fehler (403): wird als verstaendliche Fehlermeldung angezeigt, kein Stack-Trace.

Benutzeroberflaeche

GUI: Deploy-Tab

SSRSDeploymentTool v4.0.0 ⬤ ⬤ ⬤
Deploy
Migration
Server URL http://ssrs-prod/Reports Verbinden
✓ Verbunden - Microsoft SQL Server Reporting Services
Dateitypen filtern:
[x] .rdl [x] .rds [x] .rsds [ ] .pbix (SSRS: n.v.)
Dateiname Typ Status
Monatsbericht.rdl .rdl UPDATED
Jahresuebersicht.rdl .rdl CREATED
Dashboard.pbix .pbix SKIP
ProdDB.rds .rds UPDATED
Zielordner /Finanzen/Controlling ...
► Deployen 3 Dateien ausgewaehlt
1
Server URL eingeben & verbinden

Windows Auth automatisch - ProductName wird ermittelt und angezeigt.

2
Datei-Filter setzen

.pbix ist bei reinem SSRS ausgegraut. Bei PBIRS aktiv.

3
Dateien auswaehlen

ListView zeigt alle Dateien im lokalen Quellordner. Einzeln an-/abwaehlen.

4
Zielordner waehlen

Direkteingabe oder TreeView-Browser. Ordner wird angelegt wenn nicht vorhanden.

5
Deployen

Jede Datei: CREATED / UPDATED / SKIP / ERROR im Log.

Neue Funktionen v4.0

GUI: Migration-Tab NEU

SSRSDeploymentTool v4.0.0 ⬤ ⬤ ⬤
Deploy
Migration
Quell-Server ssrs-server.domain.com Verbinden
Ziel-Server pbirs-server.domain.com Verbinden
Quell-Ordner
▼ /Finanzen
▼ /Controlling
/Monatsberichte
/Personal
Ziel-Ordner
▼ /Berichte
/Finanzen
/Personal
 
Exportpfad C:\Migration\2026-05-21_Export\ ...
[x] Connection Strings anpassen
Migrieren →
12 / 34 Dateien
[OK] Monatsbericht.rdl - CREATED
[OK] ProdDB.rds - UPDATED
[SKIP] Dashboard.pbix - SSRS nicht unterstuetzt

Export auf lokales Zwischenverzeichnis - dann Deploy auf Ziel-Server.

Quell-Server
Lok. Verz.
Ziel-Server
  • Beide Server gleichzeitig verbunden
  • TreeView links: Quell-Ordnerstruktur
  • TreeView rechts: Ziel-Ordnerstruktur
  • Exportpfad: lokales Zwischenverzeichnis
  • Connection Strings optional anpassen
  • Fortschrittsbalken + Log pro Datei
Zwischenverzeichnis kann vor dem Deploy inspiziert werden - Rollback jederzeit moeglich.

Migration

Migration: Workflow

Quell-Server
SSRS / PBIRS
Export-SSRSContent
PowerShell-Funktion
Lokales Verzeichnis
C:\Migration\...
Deploy-Report /
Deploy-Data­Source
Ziel-Server
SSRS / PBIRS
1
Verbinden mit Quell-Server

Windows Auth. Verbindungstest via GET /api/v2.0/System.

2
Ordnerstruktur laden

TreeView links befuellt sich mit allen Ordnern des Quell-Servers.

3
Export: RDL als Binary, RDS als XML rekonstruiert aus JSON-API

GET /Reports (Content als Base64) - lokale Dateien werden geschrieben.

4
Zwischenverzeichnis pruefen

Optional: Dateien im Explorer inspizieren. Connection Strings anpassen. Rollback moeglich - einfach Dateien loeschen.

5
Verbinden mit Ziel-Server & Deploy

Ordnerstruktur wird angelegt. Dateien werden einzeln deployt. Log: CREATED / UPDATED / ERROR pro Datei.

Kein direkter Server-zu-Server-Transfer - immer ueber lokales Verzeichnis. Nachvollziehbar. Rollback moeglich.

Migration - Detail

Connection String Mapping

Beim Export werden .rds-Dateien aus der REST-API-Antwort (JSON) als XML rekonstruiert. Connection Strings koennen dabei per Regex ersetzt werden.

Connection String Mapping
Suchen (Regex) Ersetzen durch
ssqlprod17\INST01 pbirs-server\INST01
Data Source=DEV02 Data Source=PROD-PBIRS
Initial Catalog=ReportDB Initial Catalog=ReportDB_P
<+ neue Zeile>
+ Zeile hinzufuegen - Zeile loeschen
1
Export-Phase

Mapping wird waehrend des Exports auf alle .rds Connection Strings angewendet.

2
Regex Replace

Jede Zeile ist ein eigenes Suchen/Ersetzen-Paar. Reihenfolge beachten bei ueberlappenden Mustern.

3
Lokale Dateien pruefen

Ergebnis im Zwischenverzeichnis als .rds XML sichtbar und editierbar.

Mehrere Zeilen moeglich - fuer Umgebungen mit mehreren DB-Servern.
Optional: Ohne Mapping werden Original Connection Strings unveraendert uebernommen.

Sicherheit & Zugriff

Authentifizierung

🔐

Windows Auth (Standard)

Kein Konfigurationsaufwand. UseDefaultCredentials = true. Ausreichend fuer On-Premise SSRS und PBIRS in Windows-Domaene.

# Automatisch - kein Passwort
$cred = [System.Net.
  CredentialCache]::
  DefaultNetworkCredentials

# HttpClient (fuer .pbix)
$handler.Credentials =
  [System.Net.
  CredentialCache]::
  DefaultCredentials
📝

Manuelle Credentials

Benutzername und Passwort in der GUI eingeben. Wird als NetworkCredential uebergeben. Fuer Konten ausserhalb der aktuellen Domaene.

Benutzername domain\user
Passwort ●●●●●●●●
[ ] Windows-Authentifizierung verwenden
OAuth / AAD: zurueckgestellt. Erst relevant wenn PBIRS mit Azure AD verbunden wird. Aktuell kein Anwendungsfall in On-Premise-Umgebungen.
Szenario Empfohlene Auth Hinweis
On-Premise SSRS in Windows-Domaene Windows Auth Standardfall - kein Aufwand
On-Premise PBIRS in Windows-Domaene Windows Auth Identisch zu SSRS
Anderes Domaenen-Konto Manuell Benutzername/Passwort in GUI
Azure AD / AAD Nicht unterstuetzt Roadmap: v5.x

Architektur

Technische Basis

Komponente Details
WinForms GUI TabControl, TreeView, DataGridView, ListView, RichTextBox (Log)
REST Client Invoke-WebRequest (.rdl / .rds) + System.Net.Http.HttpClient (.pbix)
API SSRS / PBIRS REST API v2.0 - identischer Endpunkt auf beiden Servern
Binary Download Invoke-WebRequest -OutFile (RDL / RSDS binary, Base64 decode)
PBIX Upload Multipart­FormDataContent via HttpClient
PS Version PowerShell 5.1 - kein PSCore-Zwang, kein Add-Type problematisch
Authentifizierung Default­Credentials (Windows) oder Network­Credential (manuell)
Encoding UTF-8 mit BOM (.ps1) - kein em-dash in String-Literalen

API-Endpunkte (Auswahl)

# Server-Info
GET  /api/v2.0/System

# Ordner-Inhalt
GET  /api/v2.0/Folders({id})/
         CatalogItems

# Report hochladen
POST /api/v2.0/Reports

# Report ueberschreiben
PUT  /api/v2.0/Reports({id})

# Power BI Report hochladen
POST /api/v2.0/PowerBIReports

# Data Source anlegen
POST /api/v2.0/DataSources

# Ordner anlegen
POST /api/v2.0/Folders
SSRS und PBIRS verwenden denselben REST API v2.0-Endpunkt. Das Tool erkennt den Typ automatisch und aktiviert/deaktiviert .pbix-Funktionen entsprechend.

Entwicklung

Versionshistorie & Roadmap

Version Status Funktionen Umfang
v1.x / v2.x Archiv Erste WinForms-GUI, grundlegendes Deploy via SOAP/REST ~500 Zeilen
v3.0.1 v3 Stabil SSRS Deploy (.rdl, .rds, .rsds), GUI-Ueberarbeitung, Windows Auth, manuelle Credentials 1.012 Zeilen
v4.0.0 NEU Aktuell + .pbix Deploy auf PBIRS, + PBIRS Auto-Detection, + Migration-Tab, + Connection String Mapping, + DataGridView Mapping 1.526 Zeilen
v4.x Geplant Praxistest in Produktionsumgebung, Fehlerbehandlung verfeinern, Edge Cases abdecken tbd
v5.x Roadmap OAuth / AAD-Unterstuetzung, .pbix Migration, Batch-Modus ohne GUI tbd
GitHub: https://github.com/JankeUwe/SSRSDeploymentTool
PowerShell 5.1 — kein Setup, kein Installer. Script direkt ausführen.
SSRSDeploymentTool PowerShell 5.1 SSRS REST API v2.0 WinForms PBIRS GitHub: JankeUwe

Zusammenfassung

SSRSDeploymentTool v4.0 - Fazit

🚀

Deploy

.rdl / .rds / .rsds / .pbix auf SSRS oder PBIRS - ein Tool, alle Formate. Auto-Detection entscheidet welche Funktionen aktiv sind.

🔄

Migration

SSRS nach PBIRS in wenigen Klicks. Export - pruefen - Deploy. Lokales Zwischenverzeichnis fuer Transparenz und Rollback.

🔒

Sicherheit

Windows Auth ohne Konfiguration. SKIP statt Error bei falschem Server-Typ. Zwischenverzeichnis vor Deploy pruefbar.

Zielgruppe: IT-Admins und DBAs, die SSRS- oder PBIRS-Server betreiben und Berichte deployen oder migrieren muessen.
Kein Setup: PowerShell 5.1 + Windows-Domaene genuegt. Keine zusaetzlichen Module, kein NuGet.
AufgabeTool-Funktion
Neue Reports ausrollenDeploy-Tab
Reports aktualisierenDeploy-Tab (PUT)
Power BI Reports deployenDeploy-Tab (.pbix)
SSRS nach PBIRS migrierenMigration-Tab
Connection Strings anpassenMapping-Tabelle
SSRSDeploymentTool PowerShell 5.1 SSRS REST API v2.0 PBIRS WinForms Windows Auth Migration Uwe Janke 2026