Massenmigration von SQL Server-Datenbanken mit Detach-Attach: Die vollständige Anleitung

Die Detach-Attach-Methode ist die schnellste Möglichkeit, große SQL Server-Datenbanken zwischen Instanzen zu migrieren – besonders wenn Backup/Restore zu langsam wäre oder kein ausreichend schnelles Netzwerk vorhanden ist.

Voraussetzungen und Planung

  • Wartungsfenster einplanen (Datenbank ist während Migration offline)
  • Dateigrößen prüfen: Genug Speicherplatz auf Zielserver?
  • SQL Server-Versionskompatibilität sicherstellen (nur vorwärts kompatibel)
  • Logins auf Zielserver bereits vorhanden (SID-Matching)?

Schritt 1: Datenbank detachen

-- Alle Verbindungen trennen
ALTER DATABASE MyDatabase SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;

-- Datenbank detachen (true = Update Statistics)
EXEC sp_detach_db 'MyDatabase', 'true';

-- Datenbankdateien sind jetzt frei zum Kopieren:
-- C:DataMyDatabase.mdf
-- C:DataMyDatabase.ldf

Schritt 2: Dateien kopieren und anhängen

-- Dateien auf Zielserver kopieren (robocopy für große Dateien empfohlen)
-- robocopy SourceDir TargetDir MyDatabase.mdf MyDatabase.ldf /Z /MT:8

-- Auf dem Zielserver anhängen:
CREATE DATABASE MyDatabase ON
  PRIMARY (FILENAME = 'D:DataMyDatabase.mdf'),
  (FILENAME = 'D:DataMyDatabase.ldf')
FOR ATTACH;

Massenmigration: Scripted Approach

-- Script zur Massenmigration aller User Databases
SELECT
    'EXEC sp_detach_db ''' + name + ''', ''true'';'
FROM sys.databases
WHERE database_id > 4  -- Systemdatenbanken ausschließen
  AND state = 0;  -- Nur Online-Datenbanken

Detach-Attach ist ideal für große Datenbanken (100GB+), wo Backup/Restore Stunden dauern würde. Die Downtime entspricht der Zeit zum Kopieren der Datenbankdateien plus wenige Minuten für Detach/Attach-Operationen.