Freigeben über


Tutorial: Migration von SQL Server zu Azure SQL-Datenbank (offline)

Sie können den Azure-Datenbankmigrationsdienst über das Azure-Portal verwenden, um Datenbanken aus einer lokalen Instanz von SQL Server zu Azure SQL-Datenbank (offline) zu migrieren.

In diesem Lernprogramm erfahren Sie, wie Sie die Beispieldatenbank AdventureWorks2022 von einer lokalen Instanz von SQL Server zu Azure SQL-Datenbank mithilfe des Datenbankmigrationsdiensts migrieren. In diesem Tutorial wird der Offlinemigrationsmodus verwendet, durch den eine akzeptable Downtime während des Migrationsprozesses erzielt werden kann.

In diesem Tutorial lernen Sie Folgendes:

  • Erstellen einer Instanz von Azure Database Migration Service
  • Starten Ihrer Migration und Nachverfolgen des Fortschritts bis zum Abschluss

Wichtig

Derzeit sind Onlinemigrationen für Azure SQL-Datenbankziele nicht mit dem Azure-Datenbankmigrationsdienst verfügbar. Bei einer Offlinemigration beginnt die Ausfallzeit der Anwendung mit dem Start der Migration. Das Testen einer Offlinemigration wird empfohlen, um festzustellen, ob die Ausfallzeit akzeptabel ist.

Migrationsoptionen

Im folgenden Abschnitt wird die Verwendung des Azure-Datenbankmigrationsdiensts mit dem Azure-Portal beschrieben.

Voraussetzungen

Vorbereitungsmaßnahmen vor dem Ausführen des Tutorials:

  • Stellen Sie sicher, dass Sie auf das Azure-Portal zugreifen können.

  • Stellen Sie sicher, dass der Microsoft.DataMigration-Ressourcenanbieter in Ihrem Abonnement registriert ist.

  • Verwenden Sie ein Azure-Konto, das einer der folgenden integrierten Rollen zugewiesen ist:

    • Beitragender zur Azure SQL-Zieldatenbank
    • Leserrolle für die Azure-Ressourcengruppe, die die Azure SQL-Zieldatenbank enthält
    • Rolle „Besitzer“ oder „Mitwirkender“ für das Azure-Abonnement (erforderlich, wenn Sie eine neue Instanz von Azure Database Migration Service erstellen)

    Alternativ zur Verwendung einer dieser integrierten Rollen können Sie eine benutzerdefinierte Rolle zuweisen.

  • Erstellen Sie eine Zielinstanz von Azure SQL-Datenbank.

  • Vergewissern Sie sich, dass die SQL Server-Anmeldung, die eine Verbindung mit der SQL Server-Quellinstanz herstellt, Mitglied der Rolle db_datareader ist, und dass der Anmeldename für die SQL Server-Zielinstanz ein Mitglied der Rolle db_owner ist.

  • Um das Datenbankschema aus der Quelle in die Azure SQL-Zieldatenbank mithilfe des Datenbankmigrationsdiensts zu migrieren, beträgt die mindestens unterstützte SHIR-Version 5.37 oder höher.

  • Bei der Schemamigration ist die Mindestberechtigung für die SQL Server-Quelle db_owner, um auf die Datenbank zuzugreifen, und für die Ziel-Azure SQL-Datenbank sollte der Benutzer Mitglied aller in der folgenden Tabelle aufgeführten Serverrollen sein.

Rollen Beschreibung
##MS_DatabaseManager## Mitglieder der Festen Serverrolle ##MS_DatabaseManager## können Datenbanken erstellen und löschen. Ein Mitglied der # #MS_DatabaseManager###- Rolle, die eine Datenbank erstellt, wird zum Besitzer dieser Datenbank, wodurch dieser Benutzer eine Verbindung mit dieser Datenbank als dbo-Benutzer herstellen kann. Der dbo-Benutzer verfügt über alle Datenbankberechtigungen in der Datenbank. Mitglieder der Rolle "##MS_DatabaseManager##" verfügen nicht unbedingt über die Berechtigung für den Zugriff auf Datenbanken, die sie nicht besitzen. Es wird empfohlen, diese Serverrolle statt der Rolle auf Dbmanager-Datenbankebene zu verwenden, die in der master Datenbank vorhanden ist.
##MS_DatabaseConnector## Mitglieder der festen Serverrolle ##MS_DatabaseConnector## können eine Verbindung mit einer beliebigen Datenbank herstellen, ohne dass ein Benutzerkonto in der Datenbank erforderlich ist.
##MS_DefinitionReader## Mitglieder der Festen Serverrolle ##MS_DefinitionReader## können alle Katalogansichten lesen, die in VIEW ANY DEFINITION jeder Datenbank abgedeckt sind, für die das Mitglied dieser Rolle über ein Benutzerkonto verfügt.
##MS_LoginManager## Mitglieder der Festen Serverrolle ##MS_LoginManager## können Anmeldeinformationen erstellen und löschen. Es wird empfohlen, diese Serverrolle anstelle der Datenbankebenen-Rolle loginmanager zu verwenden, welche in der master-Datenbank existiert.

Vorbereiten der Azure SQL-Zieldatenbank

Führen Sie zum Erstellen der Anmeldung und des Benutzers in der Azure SQL-Zieldatenbank das folgende Skript in der master Datenbank aus:

CREATE LOGIN testuser WITH PASSWORD = '<password>';

ALTER SERVER ROLE ##MS_DefinitionReader## ADD MEMBER [testuser];
GO

ALTER SERVER ROLE ##MS_DatabaseConnector## ADD MEMBER [testuser];
GO

ALTER SERVER ROLE ##MS_DatabaseManager## ADD MEMBER [testuser];
GO

ALTER SERVER ROLE ##MS_LoginManager## ADD MEMBER [testuser];
GO

CREATE USER testuser FOR LOGIN testuser;
EXECUTE sp_addRoleMember 'dbmanager', 'testuser';
EXECUTE sp_addRoleMember 'loginmanager', 'testuser';

Jetzt können Sie sowohl das Datenbankschema als auch die Daten mithilfe des Datenbankmigrationsdiensts migrieren. Sie können auch andere Tools wie die Erweiterung SQL-Datenbankprojekte in Visual Studio Code verwenden, um das Schema zu migrieren, bevor Sie die Liste der zu migrierenden Tabellen auswählen.

Hinweis

Wenn im Azure SQL-Datenbankziel keine Tabellen vorhanden sind oder vor dem Starten der Migration keine Tabellen ausgewählt sind, steht die Schaltfläche "Weiter " nicht zur Verfügung, um die Migration zu initiieren. Wenn im Ziel keine Tabelle vorhanden ist, müssen Sie die Schemamigrationsoption auswählen, um vorwärts zu wechseln.

Erstellen einer Database Migration Service-Instanz

Schritt 1: Navigieren Sie im Azure-Portal zu der Seite Database Migration Service. Erstellen Sie eine neue Instanz des Azure-Datenbankmigrationsdiensts, oder verwenden Sie eine vorhandene Instanz, die Sie zuvor erstellt haben.

Verwenden einer vorhandenen Instanz von Database Migration Service

So verwenden Sie eine vorhandene Instanz von Database Migration Service:

  • Wählen Sie im Azure-Portal unter Azure Database Migration Services eine vorhandene Instanz des Datenbankmigrationsdiensts aus, die Sie verwenden möchten, und stellen Sie sicher, dass sie in der richtigen Ressourcengruppe und -region vorhanden ist.

    Screenshot mit der Übersicht über den Database Migration Service.

Erstellen einer neuen Instanz von Database Migration Service

So erstellen Sie eine neue Instanz von Database Migration Service:

  1. Wählen Sie im Azure-Portal unter Azure Database Migration ServiceErstellen aus.

    Screenshot mit der Option zum Erstellen im Database Migration Service.

  2. Wählen Sie im Migrationsszenario und Datenbankmigrationsdienst den gewünschten Input wie den Quell- und Zielservertyp aus, wählen Sie Datenbankmigrationsdienst und dann Auswählen aus.

    Screenshot mit Migrationsszenarien im Database Migration Service.

  3. Wählen Sie auf dem nächsten Bildschirm Datenmigrationsdienst erstellen, dann Ihr Abonnement und Ihre Ressourcengruppe aus, und wählen Sie dann Standort aus und geben Sie den Namen des Datenbankmigrationsdienstes ein. Klicken Sie auf Überprüfen + erstellen. Dies erstellt den Azure Database Migration Service.

    Screenshot mit Details zur erforderlichen Eingabe im Database Migration Service.

  4. Wenn die selbst gehostete Integrationslaufzeit (Self-Hosted Integration Runtime, SHIR) erforderlich ist, wählen Sie auf der Übersichtsseite Ihres Datenbankmigrationsdiensts und unter Einstellungen die Integrationslaufzeitaus, und führen Sie die folgenden Schritte aus:

    1. Wählen Sie Integrationslaufzeit konfigurieren und dann den Link Integrationslaufzeit herunterladen und installieren aus, um den Downloadlink in einem Webbrowser zu öffnen. Laden Sie die Integration Runtime herunter, und installieren Sie sie dann auf einem Computer, der die Voraussetzungen für eine Verbindung mit der SQL Server-Quellinstanz erfüllt. Weitere Informationen finden Sie unter Self-Hosted Integration Runtime für Datenbankmigrationen.

      Screenshot: Link „Integration Runtime herunterladen und installieren“.

      Nach Abschluss der Installation wird der Konfigurations-Manager für Microsoft Integration Runtime automatisch geöffnet, um den Registrierungsprozess zu starten.

    2. Kopieren Sie in der Tabelle Authentifizierungsschlüssel einen der Authentifizierungsschlüssel, die im Assistenten bereitgestellt werden, und fügen Sie ihn in Microsoft Integration Runtime Configuration Manager ein.

      Screenshot, der die Tabelle der Authentifizierungsschlüssel im Assistenten hervorhebt.

      Wenn der Authentifizierungsschlüssel gültig ist, wird im Integration Runtime Configuration Manager ein grünes Häkchensymbol angezeigt. Ein grünes Häkchen zeigt an, dass Sie mit der Registrierung fortfahren können.

      Schließen Sie nach dem Registrieren der selbstgehosteten Integration Runtime den Konfigurations-Manager für Microsoft Integration Runtime. Es kann mehrere Minuten dauern, bis die Knotendetails im Azure-Portal für den Datenbankmigrationsdienst unter Einstellungen > Integrationslaufzeit angezeigt werden.

      Screenshot mit hervorgehobenem SHIR-Status im Azure-Portal.

      Hinweis

      Weitere Informationen zur selbstgehosteten Integration Runtime finden Sie unter Erstellen und Konfigurieren einer selbstgehosteten Integration Runtime.

Starten einer neuen Migration

  1. Um eine neue Migration zu starten, wechseln Sie zum Azure-Datenbankmigrationsdienst im Azure-Portal, und verwenden Sie entweder +Create , um eine neue Instanz des Datenbankmigrationsdiensts zu erstellen, oder wählen Sie eine vorhandene Instanz aus, und wechseln Sie dann zu Ihrer Azure Database Migration Service-Instanz.

  2. Wählen Sie im Übersichtsbereich Ihrer Azure Database Migration Service-Instanz die Option "Neue Migration" aus:

    Screenshot des Azure-Datenbankmigrationsdashboards.

  3. Wählen Sie im Neues Migrationsszenario Ihre Quelle, den Zielservertyp und den Migrationsmodus aus, und klicken Sie dann auf Auswählen.

    Screenshot der Option

  4. Führen Sie im Offlinemigrations-Assistenten für Azure SQL-Datenbanken die folgenden Schritte aus:

    1. Geben Sie auf der Registerkarte " Quelldetails " Details für die SQL Server-Quellinstanz ein, und wählen Sie dann "Weiter" aus: Herstellen einer Verbindung mit der Quelle SQL Server:

      Screenshot der Quellnachverfolgung.

    2. Geben Sie auf der Registerkarte "Mit Sql Server-Quelle verbinden " Verbindungsdetails an, und wählen Sie dann "Weiter" aus: Wählen Sie Datenbanken für die Migration aus:

      Screenshot von

    3. Aktivieren Sie auf der Registerkarte " Datenbanken für Migration auswählen " das Kontrollkästchen neben den Datenbanken, die Sie migrieren möchten. Das Auffüllen der Liste der Datenbanken kann einige Zeit in Anspruch nehmen. Wählen Sie "Weiter" aus: Herstellen einer Verbindung mit der Azure SQL-Datenbank.

      Screenshot der Auswahl

    4. Geben Sie auf der Registerkarte «Mit Azure SQL-Datenbank verbinden» Verbindungsdetails an, und wählen Sie dann «Weiter: Quell- und Zieldatenbanken zuordnen» aus:

      Screenshot des Connect-Ziels.

    5. Ordnen Sie auf der Registerkarte "Quell- und Zieldatenbanken zuordnen" die Datenbanken zwischen der Quelle und dem Ziel zu.

      Screenshot von Kartendatenbanken.

    6. (Optional) Aktivieren Sie das Kontrollkästchen neben "Fehlendes Schema migrieren ", um fehlende Schemaobjekte aus der Quelle in das Azure SQL-Datenbankziel bereitzustellen, um die folgenden Schemaobjekte mit einem einzigen Kontrollkästchen zu migrieren:

      • Schemata
      • Tabellen (ausgewählt)
      • Indizes
      • Ansichten
      • Gespeicherte Prozeduren (StoredProcedures)
      • Synonyme
      • DDL-Trigger (DdlTriggers)
      • Standardeinstellungen
      • Volltextkataloge (FullTextCatalogs)
      • Planguides (PlanGuides)
      • Rollen
      • Regeln
      • Anwendungsrollen (ApplicationRoles)
      • Benutzerdefinierte Aggregate (UserDefinedAggregates)
      • Benutzerdefinierte Datentypen (UserDefinedDataTypes)
      • Benutzerdefinierte Funktionen (UserDefinedFunctions)
      • Benutzerdefinierte Tabellentypen (UserDefinedTableTypes)
      • Benutzerdefinierte Typen (UserDefinedTypes)
      • Benutzer* (nicht jeder Benutzertyp)
      • XmlSchemaCollections

      Hinweis

      • Wenn Sie "Fehlendes Schema migrieren" auswählen, führt der Datenbankmigrationsdienst die Schemamigration aus, bevor Daten migriert werden.
      • DMS fährt mit der Datenmigrationsphase fort, auch wenn bei der Schemamigration Fehler auftreten, es sei denn, es gibt Probleme mit Tabellenobjekten.

      Verwenden Sie als Nächstes entweder "Alle Tabellen auswählen", um alle Tabellen zu migrieren, oder verwenden Sie das Textfeld, um die Liste der Tabellen zu filtern und einzelne zu migrierende Tabellen auszuwählen. Wählen Sie dann "Weiter: Datenbankmigrationszusammenfassung" aus.

      Screenshot der Option

    7. Überprüfen Sie auf der Registerkarte " Zusammenfassung der Datenbankmigration " die Details, und wählen Sie dann " Migration starten" aus, wodurch die Datenbankmigration gestartet wird, und kehren Sie automatisch zum Dashboard des Datenbankmigrationsdiensts zurück.

      Screenshot der Zusammenfassung.

      Hinweis

      Bei einer Offlinemigration beginnt die Ausfallzeit der Anwendung beim Starten der Migration.

Überwachen der Datenbankmigration

  1. Wählen Sie zum Überwachen der Datenbankmigration im Übersichtsbereich der Datenbankmigrationsdienstinstanz die Option "Migrationen überwachen" aus.

    Screenshot der Übersicht über den Azure-Datenbankmigrationsdienst im Azure-Portal.

  2. Unter Migrationsstatus können Sie Migrationen nachverfolgen, die aktuell ausgeführt werden, abgeschlossen oder fehlgeschlagen sind (falls vorhanden), oder Sie können alle Datenbankmigrationen anzeigen. Wählen Sie in der Menüleiste Aktualisieren aus, um den Migrationsstatus zu aktualisieren.

    Screenshot der DMS-Dashboardüberwachung.

    Database Migration Service gibt bei jeder Aktualisierung des Migrationsstatus den neuesten bekannten Migrationsstatus zurück. In der folgenden Tabelle werden die möglichen Status beschrieben:

    Der Status Beschreibung
    Erstellen Der Dienst startet die Migration.
    Vorbereiten für den Kopiervorgang Der Dienst deaktiviert Autostats, Trigger und Indizes in der Zieltabelle.
    Kopieren Daten werden aus der Quelldatenbank in die Zieldatenbank kopiert.
    Kopieren abgeschlossen Das Kopieren der Daten ist abgeschlossen. Der Dienst wartet darauf, dass andere Tabellen fertig kopiert sind, damit mit den abschließenden Schritten zum Wiederherstellen des ursprünglichen Schemas der Tabellen begonnen werden kann.
    Neuerstellen von Indizes Der Dienst erstellt die Indizes der Zieltabellen neu.
    Erfolgreich Alle Daten sind kopiert, und die Indizes wurden neu erstellt.
  3. Wählen Sie unter "Quellname" einen Datenbanknamen aus, um die Tabellenansicht zu öffnen. In dieser detaillierten Ansicht sehen Sie den aktuellen Status der Migration, die Anzahl der Tabellen, die sich derzeit in diesem Status befinden, und einen detaillierten Status jeder Tabelle:

    Screenshot der detaillierten Migrationsüberwachung.

  4. Nachdem alle Tabellendaten zum Azure SQL-Datenbank-Ziel migriert wurden, aktualisiert der Database Migration Service den Migrationsstatus von In Bearbeitung zu Erfolgreich.

    Screenshot des detaillierten Migrationserfolgs.

Hinweis

Der Database Migration Service optimiert die Migration, indem er Tabellen ohne Daten (0 Zeilen) überspringt. Tabellen, die keine Daten enthalten, werden nicht in der Liste angezeigt, auch wenn Sie die Tabellen beim Erstellen der Migration ausgewählt haben.

Sie haben die Migration zu Azure SQL-Datenbank abgeschlossen. Durchlaufen Sie eine Reihe von Aufgaben nach der Migration, um sicherzustellen, dass alles reibungslos und effizient funktioniert.


Begrenzungen

Die Offlinemigration von Azure SQL-Datenbank nutzt ADF-Pipelines (Azure Data Factory) für die Datenverschiebung und ist daher an die ADF-Einschränkungen gebunden. Eine entsprechende ADF wird erstellt, wenn auch ein Datenbankmigrationsdienst erstellt wird. Die Fabrikgrenzwerte gelten daher pro Dienst.

  • Der Computer, auf dem der SHIR installiert ist, dient als Recheneinheit für die Migration. Stellen Sie sicher, dass der Computer die CPU- und Speicherlast der Datenkopie bewältigen kann. Weitere Informationen finden Sie unter Erstellen und Konfigurieren einer selbstgehosteten Integration Runtime.
  • Es gilt ein Limit von 100.000 Tabellen pro Datenbank.
  • Es gilt ein Limit von 10.000 gleichzeitigen Datenbankmigrationen pro Dienst.
  • Die Migrationsgeschwindigkeit hängt in hohem Maße von der Azure SQL-Datenbank-Ziel-SKU und dem Host der selbstgehosteten Integration Runtime ab.
  • Aufgrund des ADF-Mehraufwands bei Startaktivitäten lässt sich die Migration von Azure SQL-Datenbank mit Tabellennummern schlecht skalieren. Wenn eine Datenbank Tausende von Tabellen enthält, kann der Startprozess jeder dieser Tabellen ein paar Sekunden in Anspruch nehmen, auch wenn sie aus einer Zeile mit 1 Bit Daten bestehen.
  • Azure SQL-Datenbank-Tabellennamen mit Doppelbytezeichen werden derzeit nicht für die Migration unterstützt. Die Abhilfemaßnahme besteht darin, Tabellen vor der Migration umzubenennen. Nach erfolgreicher Migration können wieder die ursprünglichen Namen festgelegt werden.
  • Bei der Migration von Tabellen mit großen Blobspalten kann aufgrund eines Timeouts ein Fehler auftreten.
  • Aktuell werden Datenbanknamen, die reservierte Wörter von SQL Server enthalten, nicht unterstützt.
  • Datenbanknamen, die Semikolons enthalten, werden derzeit nicht unterstützt.
  • Berechnete Spalten werden nicht migriert.
  • Spalten in der Quelldatenbank, die Standardeinschränkungen aufweisen und Werte enthalten NULL , werden mit ihren definierten Standardwerten in der Azure SQL-Zieldatenbank migriert, anstatt die NULLs beizubehalten.