SQL Server Migration: 2016 → 2022/2025 · DBA-Leitfaden

🗺️ MIGRATIONSPFADE FÜR DBAs

SQL Server 2016 → 2022/2025
Sechs Wege zum Ziel

Parallelbetrieb · Neuinstallation · In-place Upgrade · Detach/Attach · dbatools · Copy-Database – Aufwand, Risiken und Entscheidungshilfe.

🎯 Zielgruppe: Datenbankadministratoren 📅 SQL Server 2016 (End of Support: 2026) → 2022 / 2025

📦 Die klassischen Migrationspfade

Parallel, Clean Install, In-place – die bekannten Wege
🔄 Parallel · Side-by-Side

Neuen Server mit SQL 2022/2025 aufsetzen, Datenbanken per Backup/Restore synchronisieren.

Risiko: Niedrig · ⏱️ Aufwand: Hoch
🧹 Clean Install

Alte Instanz deinstallieren, SQL neu installieren, Datenbanken aus Backup einspielen.

Risiko: Mittel · ⏱️ Aufwand: Mittel
⬆️ In-place Upgrade

Setup mit Upgrade-Option auf vorhandener Instanz ausführen.

Risiko: Hoch · ⏱️ Aufwand: Niedrig

➕ Erweiterte Optionen für spezielle Szenarien

Detach/Attach · dbatools · Copy-Database – wann sich diese lohnen
📎 Detach / Attach

Datenbanken vom alten Server abtrennen, Dateien (MDF/LDF) auf neuen Server kopieren, dort wieder anfügen.

✅ Vorteile

  • Sehr schnell bei großen Datenbanken (kein Backup/Restore)
  • Keine Zwischenspeicherung

❌ Nachteile

  • Datenbanken während Kopie offline
  • Kein einfaches Rollback (Quelle offline)
Risiko: Mittel · ⏱️ Dauer: Kurz (abhängig von Dateigröße)
🛠️ dbatools · Export

PowerShell-Modul dbatools für automatisierte Migration: Export-DbaUser, Copy-DbaDatabase, Start-DbaMigration.

✅ Vorteile

  • Automatisiert Logins, Jobs, Linked Server, Agent-Konfiguration
  • Weniger manuelle Fehler
  • Unterstützt parallele Übertragung

❌ Nachteile

  • Zusätzliche Software (PowerShell-Modul)
  • Lernkurve für komplexe Setups
Risiko: Niedrig · ⏱️ Aufwand: Mittel (Initiale Einrichtung)
📋 Copy-Database Wizard

SSMS-Assistent (kopiert Schemas, Daten, Logins, Jobs zwischen Instanzen).

✅ Vorteile

  • GUI-basiert, keine Skripte nötig
  • Wählt Methode (SMO oder Detach/Attach)

❌ Nachteile

  • Langsam bei großen DBs
  • Weniger flexibel als dbatools
  • Fehleranfällig bei komplexen Objekten
Risiko: Mittel · ⏱️ Dauer: Lang

🔧 Detach/Attach – Schritt für Schritt

Schnell, aber mit Downtime – wann sinnvoll?
  1. Datenbanken auf altem Server detachedUSE master; ALTER DATABASE [Name] SET OFFLINE; EXEC sp_detach_db 'Name';
  2. MDF/LDF-Dateien auf Zielserver kopieren – robuster Dateitransfer (z.B. Robocopy).
  3. Datenbanken auf neuem Server anfügenCREATE DATABASE ... FOR ATTACH;
  4. Logins, Jobs, Linked Server manuell nachziehen (oder mit dbatools).
-- Alte Datenbank abtrennen (auf Quelle) 
USE master; 
ALTER DATABASE AdventureWorks SET SINGLE_USER WITH ROLLBACK IMMEDIATE; 
EXEC sp_detach_db 'AdventureWorks'; 
 
-- Auf Ziel anfügen 
CREATE DATABASE AdventureWorks ON  
(FILENAME = 'D:\Data\AdventureWorks.mdf'), 
(FILENAME = 'E:\Log\AdventureWorks_log.ldf') 
FOR ATTACH;
⚠️ Wichtig: Nach dem Detach ist die Datenbank auf der Quelle nicht mehr verfügbar. Ein Rollback ist nur über das erneute Anfügen der Dateien oder aus Backup möglich. Daher kein Verfahren für "nervöse" Umgebungen ohne guten Rückfallplan.

🛠️ dbatools – die PowerShell-Automatisierung

Professionelle Migration inkl. Logins, Jobs und Konfiguration

dbatools ist das De-facto-Standardtool für SQL-Migrationen in der Community. Es migriert nicht nur Datenbanken, sondern auch serverseitige Objekte.

# dbatools installieren (falls noch nicht) 
Install-Module dbatools -Force 
 
# Beispiel: komplette Migration inkl. Logins, Jobs, Linked Server, Credentials 
Start-DbaMigration -Source sql2016 -Destination sql2025 -BackupRestore -MigrateLogins -MigrateJobs -MigrateLinkedServers -MigrateAgentAlerts 
 
# Nur Benutzer/Logins exportieren (z.B. für Clean-Install-Szenario) 
Export-DbaUser -SqlInstance sql2016 -Path C:\Migration\Logins.sql 
 
# Datenbank inkl. aller Objekte kopieren (online, mit minimaler Downtime) 
Copy-DbaDatabase -Source sql2016 -Destination sql2025 -Database AdventureWorks -BackupRestore -ReuseSourceFolderStructure
💡 Warum dbatools? Es erkennt automatisch orphaned users, migriert SQL-Agent-Aufträge, Operatoren, Warnungen, Backup-Devices – alles, was bei manuellen Migrationen gerne vergessen wird.

📋 Copy-Database Wizard – der GUI-Assistent

Keine Skripte, aber Einschränkungen

In SSMS: Tasks → Copy Database. Bietet zwei Methoden: Detach/Attach oder SMO (SQL Management Object). Gut für kleine bis mittelgroße Datenbanken (weniger als 200 GB).

-- SMO-Methode im Hintergrund: Transfer-Objekt 
-- Assistent generiert intern ein SSIS-Paket, das die Daten überträgt.
⚠️ Nachteil: Der Assistent kann bei komplexen Datenbanken (z.B. mit Service Broker, Full-Text, Replikation) fehlschlagen. Keine gute Wahl für Always On oder große Data Warehouses.

⚠️ Wichtig master-Datenbank nicht einfach restoren!

Warum das Restoren der alten master auf einer neuen Version gefährlich bzw. falsch ist
🚫 Alte master-Datenbank auf neuer SQL-Version wiederherstellen? Das ist kein unterstützter Migrationspfad!

Die master-Datenbank enthält versionierungsspezifische Systemtabellen, Metadaten und interne Strukturen. Eine RESTORE DATABASE master von SQL Server 2016 auf 2022/2025 führt zu Instanz-Startproblemen, Korruptionsmeldungen und nicht unterstützten Zuständen. Microsoft erlaubt kein Downgrade oder direktes Restoren von Systemdatenbanken zwischen Hauptversionen.

✅ Richtig: Alle serverseitigen Objekte (Logins, Jobs, Linked Server, Endpoints) müssen skriptbasiert oder mit Tools (dbatools) übertragen werden. Die Systemdatenbanken werden bei der Installation/Upgrade neu erzeugt.

-- Statt master zu restoren: Logins mit Skript übertragen 
-- Auf Quelle: EXEC sp_help_revlogin; (gibt CREATE LOGIN-Skripte aus) 
-- Auf Ziel: Skript ausführen 
 
-- Oder mit dbatools: 
Export-DbaLogin -SqlInstance sql2016 -Path C:\Migration\Logins.sql

🔗 Herausforderung: Linked Server migrieren

Häufige Stolperfalle bei allen Migrationspfaden

Linked Server sind oft der Grund für fehlgeschlagene Migrationsprojekte, da sie externe Abhängigkeiten enthalten (Provider, Authentifizierung, feste Server-Namen).

📋 Manuelle Migration

-- Skript für Linked Server generieren (auf Quelle) 
SELECT 'EXEC master.dbo.sp_addlinkedserver @server = N''' + name + ''', @srvproduct=N''' + product + ''', @provider=N''' + provider + ''', @datasrc=N''' + data_source + ''';'  
FROM sys.servers WHERE is_linked = 1; 
 
-- Logins für Linked Server sichern 
SELECT 'EXEC sp_addlinkedsrvlogin @rmtsrvname = N''' + name + ''', @useself = N''False'', @locallogin = NULL, @rmtuser = N''' + remote_name + ''', @rmtpassword = '''''' FROM sys.linked_logins;

🛠️ dbatools (empfohlen)

# Linked Server exportieren und importieren 
Export-DbaLinkedServer -SqlInstance sql2016 -Path C:\Migration\LinkedServers.xml 
Import-DbaLinkedServer -SqlInstance sql2025 -Path C:\Migration\LinkedServers.xml 
 
# In einer Komplettmigration: 
Start-DbaMigration -Source sql2016 -Destination sql2025 -LinkedServers
🔐 Typische Probleme: Unterschiedliche SQL-Versionen auf den Zielsystemen, fehlende OLE DB-Provider (z.B. für Oracle, DB2), Kerberos-Authentifizierung mit SPNs. Nach der Migration unbedingt jeden Linked Server testen!

📊 Alle sechs Optionen im Vergleich

Entscheidungshilfe basierend auf Datenbankgröße, Downtime-Toleranz und Automatisierung
MethodeDowntimeAutomatisierungRollbackBeste für
🔄 Parallel (Side-by-Side)MinutenMittelEinfachProduktion, große DBs, minimale Ausfallzeit
🧹 Clean InstallStundenManuellKomplexDev/Test, Systeme mit geringen Anforderungen
⬆️ In-place Upgrade30-90 MinAutomatischSnapshot nötig24/7 mit VM-Snapshot, kleine bis mittlere DBs
📎 Detach/AttachVariabel (Dateikopie)ManuellSchwierigSehr große DBs (TB), wenig Änderungen
🛠️ dbatoolsMinuten–StundenVoll (PowerShell)MöglichWiederholbare, automatisierte Migrationen, inkl. aller Objekte
📋 Copy-Database WizardLangGUIMittelKleine DBs, seltene Migrationen ohne Skripterfahrung

⚖️ Entscheidungsmatrix – welche Methode wählen?

🏆 Produktivkritische Systeme

Parallel (Side-by-Side) oder dbatools – minimales Risiko, voller Rollback. Bei sehr großen Datenbanken zusätzlich Detach/Attach erwägen.

⚡ Zeitdruck + Snapshot vorhanden

In-place Upgrade – schnell, aber nur mit VM-Snapshot und DMA-Prüfung.

🧪 Dev/Test / kleinere Instanzen

Clean Install + dbatools – sauber, übt den Prozess für die Produktion.

📦 Single One-Off Migration ohne Wiederholung

Copy-Database Wizard – für kleine DBs (< 50 GB) mit GUI-Bedienung geeignet.

© 2026 – DBA-Perspektive | Alle Angaben ohne Gewähr. Testen Sie jede Migration zuerst in einer nicht-produktiven Umgebung.
dbatools: https://dbatools.io | SQL Server Migration Assistant (DMA) empfohlen.