DBA Tooling · dtcSoftware · 2026

SQL Server
Migration Tool

Zweiphasige Datenbankmigrationen per WinForms GUI —
auch ohne direkte Netzwerkverbindung zwischen Quell- und Zielserver

SQL Server 2016 – 2025 Windows Server 2016+ PowerShell 5.1 dbaTools 2.x WinForms GUI

Uwe Janke  ·  Senior SQL Server DBA  ·  dtcSoftware

Motivation

The Problem

SQL Server Migrationen in komplexen Netzwerkumgebungen — manuell, fehleranfällig, nicht reproduzierbar.

🌐

Keine direkte Verbindung

Quell- und Zielserver in getrennten Netzsegmenten, DMZ oder unterschiedlichen Rechenzentren — kein direkter SQL-Zugriff möglich

📋

Kein Protokoll

Was wurde migriert? Welche Datenbanken? Welche Version? Kein strukturiertes Log, kein Nachweis

⏱️

Manueller Aufwand

Backup auf Quelle, Datei übertragen, Restore auf Ziel, Logins manuell anlegen, Jobs neu erstellen — jedes Mal anders

🔄

Nicht reproduzierbar

Neue Migration? Anderer DBA? Kein definierter Prozess — jedes Mal neu erfunden, jedes Mal anders

🔐

Vergessene Objekte

Logins, SQL Agent Jobs, Linked Server oder SSIS-Pakete werden vergessen oder inkonsistent migriert

🧪

Kein WhatIf

Keine Möglichkeit die Migration vorab zu simulieren — Fehler fallen erst in der Produktion auf

Überblick

The Solution

Ein Tool, ein Prozess, ein Log. Rolle wählen — der Rest läuft automatisch. Auch ohne direkte Netzwerkverbindung.


🖥️

WinForms GUI

Rollenauswahl beim Start (Source / Target / Auto). Nur die jeweils relevante Seite wird angezeigt

🔀

Zweiphasen-Konzept

Phase 1 auf dem Quellserver, Phase 2 auf dem Zielserver — JSON-State-Datei als sicheres Bindeglied

🔍

Auto-Erkennung

Zielserver erreichbar: Direct-Modus. Nicht erreichbar: TwoPhase-Modus. Automatisch, ohne Eingriff

VorherNachher
Manueller mehrstündiger ProzessAutomatisiert, strukturiert
Getrennte Netze = manueller DatentransferTwoPhase-Modus mit State-Datei
Logins / Jobs vergessenVollständige Objektmigration
Kein Log, kein NachweisStrukturiertes Log, jeder Schritt
Kein Test möglichWhatIf simuliert alles vorab
✓ Getestet auf Windows Server 2022 · SQL Server 2022 · Backup/Restore und Detach/Attach
Deep Dive

Das Zweiphasen-Konzept

Migrationen funktionieren — auch wenn sich Quelle und Ziel nicht kennen.

Konzept

Zweiphasen-Migration

Kernidee: Die Migration wird in zwei unabhängige Phasen aufgeteilt, die über eine JSON-State-Datei kommunizieren.

Phase 1 — Quellserver

📤 Export

  • Datenbanken sichern (Backup)
  • Logins exportieren
  • SQL Agent Jobs sichern
  • Linked Server erfassen
  • SSIS-Pakete exportieren
  • State-Datei schreiben
Phase 2 — Zielserver

📥 Import

  • State-Datei einlesen
  • Datenbanken restaurieren
  • Logins anlegen
  • SQL Agent Jobs importieren
  • Linked Server einrichten
  • SSIS-Pakete deployen
ℹ Direct-Modus Ist der Zielserver TCP-erreichbar, läuft die Migration vollständig in einem Durchgang — kein manueller Dateitransfer nötig.
⚡ TwoPhase-Modus State-Datei und Backup-Dateien über Exchange-Pfad (Netzlaufwerk, SFTP, USB) zum Zielserver übertragen.
Benutzeroberfläche

WinForms GUI — Phase 1 (Quellserver)

SQL Migration Tool v1.1 — Quellserver (Phase 1)
① Verbindung Quellserver
SQL-Instanz
SQLSRV01\INST1
Authentifizierung
Windows Auth
② Datenbanken
☑ AdventureWorks2022
☑ Northwind
☐ ReportServer
☐ msdb
③ Migrierbare Objekte
Logins
SQL Agent Jobs
Linked Server
SSIS-Pakete
④ Migrationsmethode
Backup / Restore
Detach / Attach
⑤ Pfade
Backup-Verzeichnis
\\FILESERVER\SQLBackup\Migration
Exchange-Pfad
\\FILESERVER\SQLBackup\Migration\state
⑥ Optionen
WhatIf (Simulation)
Compression
⑦ Fortschritt
[10:42:11]Verbindung zu SQLSRV01\INST1: OK [10:42:12]Inventar: 2 Datenbanken ausgewählt [10:42:15]Backup AdventureWorks2022: OK (1.2 GB) [10:42:31]Backup Northwind: läuft...
Abbrechen
WhatIf prüfen
▶ Phase 1 starten
Phase 1 — Quellserver — Backup läuft
65%
Workflow

4-Phasen Ablauf

1
Rollenauswahl
Source / Target / Auto
2
Verbindung & Inventar
DB, Logins, Jobs lesen
3
Phase 1 — Export
Backup + State-Datei
4
Phase 2 — Import
Restore + Objekte

Phase 1 — Quellserver

1
Verbindung & Inventarisierung

Alle Datenbanken, Logins, Jobs und Linked Server werden eingelesen und zur Auswahl angeboten

2
Backup / Detach

Ausgewählte Datenbanken werden per Backup/Restore oder Detach/Attach gesichert (mit Compression)

3
Objekte exportieren

Logins, Agent Jobs, Linked Server und optional SSIS-Pakete werden in die State-Datei serialisiert

Phase 2 — Zielserver

4
State-Datei einlesen

JSON-Datei mit allen Migrationsinformationen wird vom Exchange-Pfad geladen und validiert

5
Restore / Attach

Datenbanken werden auf dem Zielserver wiederhergestellt — inkl. Backup-Pfad-Mapping

6
Objekte importieren & verifizieren

Logins anlegen, Jobs importieren, Linked Server einrichten. Vollständiges Log aller Schritte

Deep Dive

Migrationsmethoden

📦 Backup / Restore

Klassische, sichere Methode. Datenbank bleibt auf dem Quellserver online während das Backup läuft.

Online-Betrieb möglich
Compression reduziert Dateigröße
Checksum-Validierung
~Längere Migrationszeit

🔗 Detach / Attach

Schnelle Methode für geplante Wartungsfenster. Datenbank wird kurz offline gesetzt.

Schneller Datentransfer
Kein Backup-Overhead
~Kurze Downtime nötig
~Wartungsfenster erforderlich

Migrierbare Objekte

ObjektMethodeBesonderheit
DatenbankenBackup/Restore oder Detach/AttachMit Pfad-Mapping für abweichende Laufwerke
LoginsSID-Übertragung via dbaToolsWindows- und SQL-Logins, DB-Berechtigungen
SQL Agent JobsExport / ImportAG-Sync-Jobs optional ausschliessen
Linked ServerSerialisierung via State-DateiCredentials werden nicht übertragen
SSIS-PaketeSSISDB-Export / DeployOptional, nur bei installiertem SSIS
Konfiguration

migration.config.json

Alle Pfade und Standardoptionen in einer JSON-Datei — wird beim Start automatisch eingelesen. GUI-Eingaben überschreiben die Konfiguration zur Laufzeit.

// migration.config.json
{
  "ExchangePath":
    "\\\\FILESERVER\\SQLBackup\\state",
  "BackupDirectory":
    "\\\\FILESERVER\\SQLBackup",
  "LogPath":
    "C:\\Logs\\SQLMigration",
  "MigrationMethod": "BackupRestore",
  "WhatIf":          false,
  "MigrateLogins":   true,
  "MigrateAgentJobs":true,
  "MigrateLinkedServer":true,
  "MigrateSsis":     false
}

Betriebsmodi

ModusBeschreibung
SourceNur Phase 1 — Export auf dem Quellserver
TargetNur Phase 2 — Import auf dem Zielserver
AutoState-Datei vorhanden → Target, sonst → Source

Startparameter

# Interaktiv (Rollenauswahl per Dialog)
.\SQL-Migration.ps1

# Rolle vorgeben
.\SQL-Migration.ps1 -Role Source
.\SQL-Migration.ps1 -Role Target

# WhatIf-Simulation
.\SQL-Migration.ps1 -WhatIf
Qualität & Sicherheit

WhatIf-Modus & Logging

🧪 WhatIf-Modus

Alle Migrationsschritte werden vollständig simuliert — ohne eine einzige Änderung am System.

1
Verbindungen prüfen

SQL-Verbindung zu Quelle und Ziel wird getestet und protokolliert

2
Objekte inventarisieren

Alle zu migrierenden Datenbanken, Logins und Jobs werden aufgelistet

3
Konflikte erkennen

Bereits vorhandene Datenbanken oder Logins auf dem Zielserver werden gemeldet

4
Bericht ausgeben

Vollständiges WhatIf-Log zeigt was passieren würde — ohne Ausführung

⚡ Empfehlung Vor jeder produktiven Migration immer zuerst mit -WhatIf testen.

📋 Strukturiertes Logging

Jeder Schritt wird mit Zeitstempel, Status und Fehlermeldung protokolliert.

[2026-05-22 10:42:08] INFO Migration gestartet — Rolle: Source [2026-05-22 10:42:09] INFO Verbindung SQLSRV01\INST1: OK [2026-05-22 10:42:11] OK Inventar: 2 DBs, 15 Logins, 8 Jobs [2026-05-22 10:42:15] OK Backup AdventureWorks2022 (1.2 GB) [2026-05-22 10:44:03] OK Backup Northwind (320 MB) [2026-05-22 10:44:05] OK Logins serialisiert: 15 [2026-05-22 10:44:06] OK Agent Jobs serialisiert: 8 [2026-05-22 10:44:06] WARN Linked Server: Credentials nicht übertragen [2026-05-22 10:44:07] OK State-Datei geschrieben: migration_state.json [2026-05-22 10:44:07] OK Phase 1 abgeschlossen — Dauer: 1:59 min
Vorbereitung

Voraussetzungen

Systemvoraussetzungen

AnforderungHinweis
Windows Server2016 oder neuer — Quell- und Zielserver
SQL Server (Quelle)Ab 2016 — Enterprise oder Standard
SQL Server (Ziel)2016 bis 2025 — höher oder gleich Quelle
PowerShell 5.1Vorinstalliert auf WS 2022
dbaTools ≥ 2.0Wird automatisch installiert
Lokaler AdministratorAuf Quell- und Zielserver
Netzwerk-Share erreichbarFür Exchange-Pfad (TwoPhase)
ℹ Named Instances Das Tool unterstützt Named Instances vollständig — Instanzname wird in der State-Datei gespeichert und auf dem Zielserver übernommen.

Netzwerk-Szenarien

A
Direct-Modus (empfohlen)

Beide Server im selben Netz erreichbar → vollautomatisch in einem Lauf

B
TwoPhase — Netzlaufwerk

Exchange-Pfad auf gemeinsam zugänglichem Share → State-Datei + Backups automatisch übergeben

C
TwoPhase — physisch getrennt

State-Datei + Backup-Ordner per SFTP, USB oder Kurier zwischen Standorten übertragen

✓ Beide Server in selber Domäne Windows-Auth (Kerberos) wird bevorzugt — kein SQL-Login nötig.
Ökosystem

Toolchain-Integration

Das Migration Tool ist Teil einer vollständigen DBA-Toolchain — jedes Tool übernimmt einen klar abgegrenzten Aufgabenbereich.

🔧 SQLSetupTool

Standardisierte SQL Server Installation auf dem Zielserver — bevor die Migration beginnt.


SQLSetupTool

📦 Migration Tool

Überträgt Datenbanken, Logins, Jobs und Konfiguration vom Alt- auf den Neusystem.


◉ Dieses Tool

📊 sqmSQLTool

Laufender Betrieb: Backup, Monitoring, Health-Checks, AG-Sync auf dem Zielserver.


sqmSQLTool
ℹ Typischer Ablauf SQLSetupTool → Migration Tool → sqmSQLTool. Die Tools sind unabhängig einsetzbar, aber als Sequenz entwickelt.

Scope & Grenzen

✓ Im Scope

  • Datenbanken, Logins, Jobs, Linked Server, SSIS
  • Backup/Restore und Detach/Attach
  • Direct- und TwoPhase-Modus
  • WhatIf-Simulation, strukturiertes Log

✗ Nicht im Scope

  • Windows Server Migration / Konfiguration
  • Firewall-Regeln, DNS, SPN
  • In-Place-Upgrade (separates Tool)
  • Linked Server Credentials
Fazit

Zusammenfassung

Zweiphasige Migration

Funktioniert auch ohne direkte Netzwerkverbindung — JSON-State-Datei als Bindeglied zwischen Quell- und Zielserver

Vollständige Objektmigration

Datenbanken, Logins, Agent Jobs, Linked Server und SSIS-Pakete in einem kontrollierten Prozess

WhatIf vor jeder Migration

Vollständige Simulation ohne Systemeingriff — Konflikte und Fehler werden vorab erkannt

Auto-Erkennung des Modus

Direct oder TwoPhase — das Tool entscheidet anhand der Netzwerkerreichbarkeit automatisch

Strukturiertes Log

Jeder Schritt protokolliert — Zeitstempel, Status, Fehlermeldung. Nachweis für alle Änderungen

Ressourcen:

github.com/JankeUwe/SQLMigration www.powershelldba.de
Uwe Janke  ·  Senior SQL Server DBA  ·  dtcSoftware  ·  2026