(0) exportieren Drucken
Alle erweitern

Vorgehensweise: Verwenden von "bcp" zum Migrieren einer Datenbank zu einer Azure SQL-Datenbank

Letzte Aktualisierung: Oktober 2014

Das SQL Server bcp-Hilfsprogramm unterstützt leistungsstarke Datenübertragungen bei der Migration einer SQL Server-Datenbank zu Microsoft Azure SQL-Datenbank. Zunächst verwenden Sie bcp, um die Daten aus einer Quelltabelle in eine Datendatei zu kopieren. Anschließend führen Sie das Programm erneut aus, um die Daten aus der Datendatei in die Zieltabelle zu kopieren. Da mit bcp nur Daten verschoben werden, muss es mit einem anderen Prozess für die Migration des Datenbankschemas kombiniert werden.

Das bcp-Hilfsprogramm ist ein Befehlszeilen-Hilfsprogramm, das für leistungsstarke Massenuploads auf SQL Server oder Microsoft Azure SQL-Datenbank entwickelt wurde. Es handelt sich um kein Migrationstool. Darüber hinaus extrahiert oder erstellt es keine Schemas. Zuerst müssen Sie das Schema in eine Datenbank in Microsoft Azure SQL-Datenbank übertragen, indem Sie eines der Schemamigrationstools, wie den Assistenten zum Generieren von Skripts, verwenden oder indem Sie ein Datenebenenanwendungs-Paket (DAC) extrahieren und bereitstellen. Hilfe dazu, wie Sie einen Schemamigrationsprozess identifizieren, finden Sie unter Azure SQL Database Migration Processes.

Das bcp-Hilfsprogramm ruft die SQL Server-Massenkopierfunktion auf, die auch in den SQL Server-Anwendungsprogrammierschnittstellen (APIs) verfügbar gemacht wird. Die Massenkopierfunktion wird auch von verschiedenen Migrationstools, z. B. dem Microsoft Azure SQL-Datenbank-Migrations-Assistenten, und DAC BACPAC-Dateien zum Übertragen von Daten verwendet.

Verwenden Sie Best Practices zum Massenkopieren, um die Leistung beim Kopieren von Daten in eine große Zieltabelle zu verbessern. Beispiel:

  • Verwenden Sie die –N-Option, um Daten im einheitlichen Modus zu übertragen, damit keine Datentypkonvertierung erforderlich ist.

  • Verwenden Sie die –b-Option, um eine Batchgröße anzugeben. Jeder Batch wird als separate Transaktion importiert und protokolliert. Standardmäßig werden alle Zeilen in der Datendatei als jeweils ein Batch importiert. Bei einem Transaktionsfehler wird nur für die Einfügungen aus dem aktuellen Batch ein Rollback ausgeführt. Bestimmen Sie die optimale Batchgröße. Das ist eine gute Methode, um während der Datenmigration Verbindungsabbrüche mit Microsoft Azure SQL-Datenbank zu reduzieren.

  • Verwenden Sie bcp-Hinweise:

    • Verwenden Sie den -h "TABLOCK"-Hinweis für den Import, um anzugeben, dass eine Massenupdatesperre auf Tabellenebene für die Dauer des Massenladevorgangs verwendet wird. Da eine einzelne Tabellensperre anstelle einer Sperre für jede Zeile verwendet wird, reduziert sich der Mehraufwand durch Sperren.

    • Verwenden Sie den –h "ORDER(…)"-Hinweis für den Export, um die Datendatei zu sortieren. Die Leistung von Massenimporten wird verbessert, wenn die zu importierenden Daten entsprechend dem gruppierten Index der Tabelle sortiert sind.

  • Teilen Sie bei großen Tabellen die Importkopie in mehrere Datenströme, die Sie gleichzeitig ausführen können. Wenn Sie die Daten aus der Quelltabelle in eine einzelne Datendatei massenkopiert haben, verwenden Sie den –F firstrow-Parameter und –L lastrow-Parameter, um anzugeben, welcher Teil der Datendatei bei jeder Ausführung von bcp verarbeitet wird.

Weitere Informationen zu Best Practices für das Massenkopieren finden Sie unter Optimieren der Leistung des Massenimportierens.

Wenn Sie die Primärschlüssel in einer Tabelle mithilfe von IDENTITY generieren, verwenden Sie den –E-Parameter von bcp, um die in der Quelldatenbank generierten Schlüssel beizubehalten. -E sollte während des Imports Fremdschlüsselverletzungen verhindern, vorausgesetzt, es werden keine anderen Updates an den Tabellen vorgenommen, während der Import ausgeführt wird. Stellen Sie sicher, dass keine anderen Updates möglich sind, beispielsweise, indem Sie die Datenbank in den schreibgeschützten Modus schalten.

noteHinweis
Da von bcp jeweils eine Tabelle verarbeitet wird, wird beim Extrahieren von Daten aus einer Quelldatenbank keine Transaktionsintegrität über mehrere Tabellen aufrechterhalten. Sie können dieses Problem beheben, indem Sie die Quelldatenbank während eines Exports in den Einzelbenutzermodus oder schreibgeschützten Modus schalten.

[Top]

Die Tabellen in der Zieldatenbank müssen für den Import durch Massenkopieren leer sein. Mehrere Massenkopierimports in dieselbe Tabelle sind nur möglich, wenn Sie alle im vorherigen Massenkopiervorgang eingefügten Zeilen abschneiden oder löschen.

[Top]

bcp ist im Lieferumfang von SQL Server enthalten. Wenn Sie die Clienthilfsprogramme von SQL Server 2008 R2 oder höheren SQL Server-Versionen installieren, erhalten Sie eine für Microsoft Azure SQL-Datenbank unterstützte bcp-Version.

[Top]

Die Verwendung von bcp zum Verschieben der Daten aus einer Tabelle in der Quelldatenbank in die Kopie der Tabelle in der Zieldatenbank umfasst fünf Schritte:

  1. Migrieren des Schemas

    Erstellen Sie mithilfe eines Schemaübertragungsmechanismus, z. B. dem Assistenten zum Generieren von Skripts oder einer DAC BACPAC-Datei, eine Kopie der Datenbank in Microsoft Azure SQL-Datenbank. Am Ende des Verfahrens sollten alle Tabellen in der Azure SQL-Datenbank-Datenbank erstellt worden sein, aber keine Daten enthalten.

  2. Exportieren der Daten in Datendateien

    Führen Sie für jede Tabelle in der SQL Server-Quelldatenbank einen bcp-Vorgang mit dem out-Parameter aus, um die Daten aus der Tabelle in eine Datendatei zu kopieren. Im Folgenden ein Beispiel für das Exportieren der Daten aus einer Tabelle in eine Datendatei:

    bcp tableName out C:\filePath\exportFileName.dat –S serverName –T –n -q
    
    Der out-Parameter gibt an, dass Daten aus SQL Server kopiert werden. Der -n-Parameter führt den Massenkopiervorgang mithilfe systemeigener Datenbank-Datentypen aus. Der -q-Parameter führt die SET QUOTED_IDENTIFIERS ON-Anweisung für die Verbindung zwischen dem bcp-Hilfsprogramm und der Instanz des Datenbankmoduls aus.

  3. Durchführen von Optimierungen für Massenkopiervorgänge

    Nehmen Sie die erforderlichen Änderungen am Schema der Zieldatenbank vor, um das Kopieren von Daten in große Tabellen zu beschleunigen; deaktivieren Sie beispielsweise nicht gruppierte Indizes, Trigger und Einschränkungen.

  4. Importieren der Datendatei in Azure SQL-Datenbank

    Führen Sie das bcp-Hilfsprogramm für jede Tabelle in der Microsoft Azure SQL-Datenbank-Zieldatenbank aus, und kopieren Sie die Daten aus der Exportdatendatei in die Tabelle. In diesem Beispiel wird bcp dreimal ausgeführt, um Daten aus einer Datendatei mit ungefähr 300.000 Zeilen in eine einzelne Tabelle zu kopieren. Bei jeder Ausführung werden ungefähr 100.000 Zeilen kopiert.

    Bcp tableName in c:\filePath\exportFileName.dat –n –U userName@serverName –S tcp:serverName.database.windows.net –P password –b 200 –L 99999 –h”TABLOCK”
    
    Bcp tableName in c:\filePath\exportFileName.dat –n –U userName@serverName –S tcp:serverName.database.windows.net –P password –b 200 –F 100000 –L 199999 –h”TABLOCK”
    
    Bcp tableName in c:\filePath\exportFileName.dat –n –U userName@serverName –S tcp:serverName.database.windows.net –P password –b 200 –F 200000 –h”TABLOCK”
    
    Der in-Parameter gibt an, dass die Daten in Microsoft Azure SQL-Datenbank kopiert werden. Der -b-Parameter gibt die Anzahl der Zeilen pro Batch importierter Daten an. Der –L lastrow-Parameter und –F firstrow-Parameter werden verwendet, um anzugeben, welcher Teil der Datendatei bei jeder Ausführung verarbeitet wird.

  5. Entfernen von Schemaoptimierungen

    Stellen Sie alle Schemaelemente, die zur Optimierung der Masseneinfügungen entfernt wurden, wieder her. Aktivieren Sie z. B. nicht gruppierte Indizes, Trigger oder Einschränkungen, die in Schritt 3 deaktiviert wurden.

[Top]

Anzeigen:
© 2014 Microsoft