Datenbankumzug

Datenbankumzug

Die Datenbank soll von MSSQL Server A zu B umziehen. Das kann viele Gründe haben, z. Bsp. der MSSQL soll einfach geändert werden oder entlastet werden. Es gibt verschiedene Möglichkeiten dies zu tun. Unbedingt alle enaio Dienste vorher stoppen!

 

Vorgehen in Kurzform

  1. alle enaio Dienste beenden 

  2. Datenbank transferieren, entweder per:  

    1. Import/Export, Nachteil: alle Indexe müssen neu erstellt werden, ebenso alle Prozeduren und Funktionen

    2. Ab/Anhängen mit sp_detach_db / sp_attach_db. Nachteil: Das Schema muss angepasst werden 

    3. Sicherung / Rücksicherung. Nachteile: Man benötigt mehr Plattenplatz, weil die Sicherung Plattenplatz verschlingt. Das Schema muss angepasst werden 

    4. Datenbank kopieren und beim neuen Server einhängen mit sp_attach_db. Nachteile: Vorm Kopieren muss entweder die Datenbank offline sein oder der MSSSQL-Server muss beendet werden. Das Schema muss angepasst werden  

  3. ODBC-Datenquelle anpassen. Das genügt, denn Datenbank-Benutzer und Passwort stehen in der Registry.  Ändern sich mit der Datenbank auch Datenbank-Benutzer und/oder Passwort, bitte nach Das Datenbankpasswort muss geändert werden vorgehen. 

  4. enaio Applikationsserver (= axsvckrn.exe) starten und startup.txt sowie Server-Err-Logs prüfen. Gibt es keine Auffälligkeiten, dann alle anderen Services auch wieder starten. 

 

 

nachfolgend beschrieben:


Schritt-für-Schritt-Anleitung (nur Transfer der Datenbank)

per Import/Export

  1. Beim neuen MSSQL Server eine geeignete Datenbank anlegen und einen Benutzer, siehe Wie sollte ein Datenbank-Benutzer angelegt werden (inkl. Schema) - MSSQL-Server?

  2. MSSQL-Managementstudio starten, egal auf welchem Datenbankserver. Wichtig ist nur, dass man beim "alten" Server "Exportieren" wählen muss und beim neuen Server "Importieren". Es empfiehlt sich, einen Import vom neuen Server auszuführen. 

  3. Bei der Datenbank rechte Maustaste drücken und "Tasks, Daten exportieren" wählen, wenn man sich auf dem "alten" Server befindet. Wenn man auf der neuen Datenbank ist, dann "Daten importieren" wählen. Im Beispiel soll von MSSQL2016 zu MSSQL2019 transferiert werden:

  4. Dem MSSQL-Assistenten folgen:

    1. Willkommensseite >> "Weiter" anklicken 

    2. Datenquelle bei "Exportieren":

      1. SQL-Server wählen oder "SQL Server Native Client", je nachdem, was verfügbar ist. 

      2. Servername (lokaler Server) wählen. Standard ist Servername. Sollte eine spezielle Instanz installiert worden sein, dann diese auswählen, z. Bsp. MSSQL2016\PROD. 

      3. Authentifizierung: Wenn man als SA-Benutzer angemeldet ist oder mit Admin-Rechten, genügt Auswahl "Windows-Authentifizierung". Ansonsten den enaio Datenbankbenutzer verwenden, z. Bsp. sysadm. 

      4. Datenbank: Wenn man ausreichend Rechte hat, kann man bei Datenbank die Quelldatenbank wählen. Kann man keine Datenbank wählen, bitte die Rechte prüfen, mit denen man angemeldet ist und die Datenbank. 

      5. Beispiel: Die Datenbank PH750 soll von MSSQL2016 exporitiert werden

      6. dann mit "Weiter" zur Zielauswahl. 

    3. Ziel auswählen bei "Exportieren":

      1. SQL-Server wählen oder "SQL Server Native Client", je nachdem, was verfügbar ist. 

      2. Servername (Zielserver) wählen. Standard ist Servername. Sollte eine spezielle Instanz installiert worden sein, dann diese auswählen, z. Bsp. MSSQL2019\PROD. 

      3. Authentifizierung: Hier sollte zwingend der enaio Datenbankbenutzer verwendet werden, z. Bsp. sysadm. Dann wird das Schema gleich korrekt zugewiesen. 

      4. Datenbank: Wenn man ausreichend Rechte hat, kann man bei Datenbank die Zieldatenbank wählen. Kann man keine Datenbank wählen, bitte die Benutzer, Port, SQL-Server-Einstellungen, Schema und Rechte auf dem Zielserver prüfen.

      5. Beispiel: Die Datenbank MeineNeueDBsoll von MSSQL2019 ist das Ziel: 

      6. dann mit "Weiter" weiter zum nächsten Schritt.

    4. Die Startauswahl steht bei "Daten aus mindestens einer Tabelle oder Sicht kopieren". Das belassen und "weiter".

    5. Tabellenauswahl: Hier einfach das oberste Kästchen anhaken. Damit werden alle Tabellen und Views markiert. Darauf achten, dass das Schema korrekt verwendet wird. Im Beispiel ist es im alten und im neuen System je PH. Sollte die Zuordnung nicht stimmen, kann man den Button "Zuordnung bearbeiten" drücken und das gewünschte Schema eintragen. 

       

      Dann mit "Weiter" zur Zusammenfassung.

    6. hier den Haken bei "sofort ausführen" belassen und Fertigstellen oder "Weiter" drücken. 

  5. Der Transfer der Daten läuft nun. Abwarten, bis es fertig ist. Am Ende sollte man den Bericht prüfen, ob Fehler aufgetreten sind. 

  6. Nach Anpassung der ODBC-Datenquelle bei dem/den Applikationsservern und dem Start des Server die Indexe erstellen. Entweder über den Editor oder per SQL-Skript. 

 

per Sichern/Rücksichern

  1. MSSQL Managementstudio starten und am besten mit Admin-Rechten anmelden, am besten beim alten Datenbank-Server. 

  2. Bei der Datenbank rechte Maustaste und bei "Tasks, Sichern" wählen und dem Assistenten folgen:

  3. Alternative: eine Anfrage erstellen und diesen Befehl eintragen:
    BACKUP DATABASE [datenbankname] TO DISK='pfad zum Backverzeichnis +Name'
    Beispiel:

    BACKUP DATABASE [PH750] TO DISK='E:\MSSQL\BACKUP\PH750_20220211.bak'
  4. Die Sicherungsdatei transferieren zum neuen Datenbankserver. 

  5. MSSQL Managementstudio beim neuen Datenbank-Server starten und am besten mit Admin-Rechten anmelden.

  6. Bei "Databases" rechte Maustaste und "Rücksichern" bzw. "Datenbank wiederherstellen" bzw. "Restore Database" wählen (die Anzeige hängt von der Sprache und dem MSSQL-Server ab)

  7. Nun dem Assistenten folgen. Wichtig: anstelle "Database"/"Datenbank" wählen "Device"/"Medium"
    Dann kann die Sicherungsdatei ausgewählt werden. Unbedingt alle Einstellungen durchklicken und Pfad und Name prüfen und ggfls. anpassen. Bei Optionen anhaken "Restore with recovery" 

  8. Jetzt fehlt noch die Zuweisung der Rechte und des Schemas. Wenn der alte und der neue Datenbankbenutzer gleich heißen, muss ggfls. das Schema 2x angepasst werden - einmal auf DBO, dann den alten Benutzer entfernen oder den neuen Benutzer berechtigen und dann das Schema von DBO auf den neuen richtigen Namen ändern. siehe: KB-022/11 und
    Wie kann man das Schema anpassen (MSSQL-Server)?

 

per Detach/Attach-Befehl

  1. MSSQL Managementstudio starten und am besten mit Admin-Rechten anmelden, am besten beim alten Datenbank-Server. 

  2. Zuerst die Dateien ermitteln, die zur Datenbank gehören. Im Normalfall sind das 2 Dateien (MDF und LDF). 

    1. Dazu einfach rechte Maustaste auf der Datenbank klicken und auf "Dateien". 

      Alternativ per Statement:

      USE [MeineDatenbank]; SELECT * FROM DBO.SYSFILES;
    2. sollte die LDF sehr groß sein, empfiehlt es sich, diese vor dem Transfer zu kürzen, siehe Kürzen Transaktionsprotokoll. 

  3. Eine neue Abfrage erstellen und einfach eingeben: sp_detach_db 'Datenbankname'
    Beispiel:

    sp_detach_db 'PH750'

    siehe auch: https://docs.microsoft.com/de-de/sql/relational-databases/system-stored-procedures/sp-detach-db-transact-sql?view=sql-server-ver15
    Bei manchen MSSQL-Servern darf man auf keinen Fall mehr die Datenbank markiert haben oder eine Abfrage für die Datenbank offen haben. 
    Damit ist die Datenbank vom MSSQL-Server gelöst und kann zum neuen Server verschoben werden. 

  4. Beim neuen Datenbank-Server die Datenbankdateien einfügen, am besten gleich in das/die gewünschten Zielverzeichnis(se). 

  5. MSSQL Managementstudio beim neuen Datenbank-Server starten und am besten mit Admin-Rechten anmelden.

  6. Nun mit sp_attach_db die Datenbank wieder einhängen. Der MSSQL-Server erkennt automatisch das Datenbankformat und passt es ggfls. an, siehe auch:
    https://docs.microsoft.com/de-de/sql/relational-databases/system-stored-procedures/sp-attach-db-transact-sql?view=sql-server-ver15
    Beispiel:

    sp_attach_db 'PH750','E:\MSSQL\DATA\PH750.MDF','E:\MSSQL\DATA\PH750.LDF'
  7. Jetzt fehlt noch die Zuweisung der Rechte und des Schemas. Wenn der alte und der neue Datenbankbenutzer gleich heißen, muss das Schema 2x angepasst werden - einmal auf DBO, dann den alten Benutzer entfernen oder den neuen Benutzer berechtigen und dann das Schema von DBO auf den neuen richtigen Namen ändern. siehe: KB-022/11
    und siehe Wie kann man das Schema anpassen (MSSQL-Server)?

 

 

Vor dem Transfer sollte geprüft werden, wie groß die Datenbank und die Transaktionslogs sind. Wenn diese zu groß sind, empfiehlt sich das Kürzen.
Wer sich für da Kopieren der Dateien entscheidet, sollte darauf achten, dass die Datenbank entweder offline ist oder der Dienst MSSQL-Server beendet ist. Ansonsten kann es passieren, dass die Datenbank nicht lesbar ist. 

Verwandte Artikel