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:
- Struktur ohne Daten
- Testdaten (anonymisiert)
- 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
Alt | Neu | Bedeutung |
---|---|---|
1 | M | Herr |
2 | F | Frau |
9 | X | Divers |
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