Typische Fehler bei der Migration – Wovor ich warne und wie ich absichere

Metadaten? Meist unterschätzt

Ohne Strukturinformationen migrierst Du blind.
Ich sichere immer:

Was ich sichere:

  • Tabellen und Spalten
  • Datentypen und Längen
  • Beziehungen und Indizes
  • Trigger und Views
  • Benutzerrechte

T-SQL: Strukturübersicht

SELECT 
  TABLE_NAME, COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH
FROM INFORMATION_SCHEMA.COLUMNS
ORDER BY TABLE_NAME, ORDINAL_POSITION;

Access-VBA: Tabellenliste

Sub TabellenListe()
  Dim td As DAO.TableDef
  For Each td In CurrentDb.TableDefs
    If Left(td.Name, 4) <> "MSys" Then Debug.Print td.Name
  Next
End Sub

Migrationsdaten ungetestet? Keine gute Idee

Ich arbeite immer mit drei Ständen:

  1. Struktur ohne Daten
  2. Testdaten (anonymisiert)
  3. Echtdaten (produktiv)

So erkennst Du Brüche, bevor’s teuer wird.

Transformationen ohne Mapping

Neue Felder brauchen klare Regeln.
Sonst kommt Mist raus.

Beispiel: Anrede konvertieren

AltNeuBedeutung
1MHerr
2FFrau
9XDivers

T-SQL: Umsetzung

UPDATE Kunden
SET Anrede = CASE Anrede
  WHEN 1 THEN 'M'
  WHEN 2 THEN 'F'
  WHEN 9 THEN 'X'
  ELSE NULL
END

Fremdschlüssel? Gern vergessen

Die Reihenfolge der Tabellen ist entscheidend.
Erst Eltern, dann Kinder.

Access-VBA: Fremdschlüssel prüfen

Sub CheckFKS()
  Dim rs As DAO.Recordset
  Set rs = CurrentDb.OpenRecordset("SELECT * FROM Aufträge WHERE KundeID NOT IN (SELECT KundeID FROM Kunden)")
  If Not rs.EOF Then
    MsgBox "Ungültige Fremdschlüssel gefunden."
  End If
  rs.Close
  Set rs = Nothing
End Sub

Trigger und Prozeduren bleiben oft liegen

Ohne Businesslogik ist die Datenbank nutzlos.
Ich sichere alles vorab.

T-SQL: Prozeduren sichern

SELECT 
  name, 
  OBJECT_DEFINITION(object_id) AS Definition 
FROM sys.procedures;

Zeitplanung? Meist zu optimistisch

„Wir machen das am Wochenende“ – Klassiker.
Ich rechne grundsätzlich mit:

  • 3× so viel Laufzeit wie geschätzt
  • 1× für Tests
  • 1× für Rollback

Kein Delta? Keine Performance

Alles auf einmal zu migrieren ist selten schlau.
Ich trenne Grunddaten von Bewegungsdaten.

T-SQL: Delta ziehen

SELECT * 
FROM Bestellungen
WHERE Änderungsdatum >= '2025-04-01';

Ohne Protokoll kein Überblick

Ich schreibe immer mit:

  • Start- und Endzeit
  • Anzahl Datensätze
  • Fehlermeldungen

Access-VBA: Backup

Sub BackupDB()
  FileCopy CurrentDb.Name, CurrentProject.Path & "\Backup_" & Format(Now, "yyyymmdd_hhnnss") & ".accdb"
End Sub

Zeichensätze und Sortierung? Stolperfallen

„Müller“ wird zu „Muller“? Klassiker.
Ich verwende immer NVARCHAR und passende Collation.

T-SQL: Collation prüfen

SELECT name, collation_name 
FROM sys.databases
WHERE name = 'Zieldatenbank';

Nach der Migration: Test vergessen

Ich plane direkt danach:

  • Vergleichszahlen (Summen, Counts)
  • Key-User-Freigabe
  • Rückmeldung

T-SQL: Vergleich alt/neu

SELECT 
  (SELECT COUNT(*) FROM Altdaten.dbo.Kunden) AS Altanzahl,
  (SELECT COUNT(*) FROM Neudaten.dbo.Kunden) AS Neuanzahl;

Mein Fazit

Migration ohne Plan endet meist in Nachtschichten.
Plan lieber doppelt. Und mach’s mit Verstand.

Keine Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert