Masseneinfügungsaufgabe

Der Task für Masseneinfügung bietet eine effiziente Möglichkeit, große Datenmengen in eine SQL Server-Tabelle oder -Ansicht zu kopieren. Angenommen, Ihr Unternehmen verwaltet eine Produktliste mit einer Million Zeilen auf einem Großrechner. Das E-Commerce-System des Unternehmens verwendet jedoch SQL Server zum Auffüllen von Webseiten. Sie müssen die SQL Server -Produkttabelle jede Nacht mit der Hauptproduktliste vom Großrechner aktualisieren. Um die Tabelle zu aktualisieren, speichern Sie die Produktliste in einem tabulatorgetrennten Format und verwenden den Task „Bulk Insert“, um die Daten direkt in die SQL-Server-Tabelle zu kopieren.

Um ein Kopieren mit hoher Geschwindigkeit zu gewährleisten, können an den Daten keine Transformationen vorgenommen werden, während sie von der Quelldatei in die Tabelle oder Ansicht übertragen werden.

Überlegungen zur Verwendung

Bevor Sie die Masseneinfügeaufgabe verwenden, beachten Sie Folgendes:

  • Der Task für Masseneinfügung kann Daten nur aus einer Textdatei in eine SQL Server-Tabelle oder -Sicht übertragen. Um den Task „Masseneinfügung“ zum Übertragen von Daten aus anderen Datenbankverwaltungssystemen (DBMS) zu verwenden, müssen Sie die Daten aus der Quelle in eine Textdatei exportieren und anschließend die Daten aus der Textdatei in eine SQL Server-Tabelle oder -Ansicht importieren.

  • Das Ziel muss eine Tabelle oder View in einer SQL Server-Datenbank sein. Wenn die Zieltabelle oder -ansicht bereits Daten enthält, werden die neuen Daten an die vorhandenen Daten angehängt, wenn der Bulk Insert-Task ausgeführt wird. Wenn Sie die Daten ersetzen möchten, führen Sie eine Execute SQL-Aufgabe aus, die eine DELETE oder TRUNCATE-Anweisung ausführt, bevor Sie die Aufgabe "Masseneinfügung" ausführen. Weitere Informationen finden Sie unter Execute SQL Task.

  • Sie können im Aufgabenobjekt „Bulk Insert“ eine Formatdatei verwenden. Wenn Sie über eine Formatdatei verfügen, die mit dem Hilfsprogramm bcp erstellt wurde, können Sie den Pfad dazu im Task für den Masseneinfügevorgang angeben. Der Masseneinfügungstask unterstützt XML- und Nicht-XML-Formatdateien. Weitere Informationen zu Formatdateien finden Sie unter Formatdateien zum Importieren oder Exportieren von Daten (SQL Server).

  • Nur Mitglieder der festen Serverrolle sysadmin können ein Paket ausführen, das einen Massenimporttask enthält.

Masseneinfügungsaufgabe mit Transaktionen

Wenn keine Batchgröße festgelegt ist, wird der gesamte Massenkopiervorgang als eine einzige Transaktion behandelt. Die Batchgröße 0 gibt an, dass die Daten in einem einzigen Batch eingefügt werden. Wenn eine Batchgröße festgelegt ist, stellt jeder Batch eine Transaktion dar, für die nach Beendigung des Batches ein Commit ausgeführt wird.

Das Verhalten des Masseneinfügungstasks in Verbindung mit Transaktionen hängt davon ab, ob der Task an der Pakettransaktion teilnimmt. Wenn sich der Bulk-Insert-Task nicht an der Pakettransaktion beteiligt, wird jedes fehlerfreie Batch als Einheit committet, bevor das nächste Batch verarbeitet wird. Wenn der Masseneinfügungstask an der Pakettransaktion teilnimmt, verbleiben fehlerfreie Batches nach Abschluss des Tasks in der Transaktion. Diese Batches unterliegen dem Commit- oder Rollbackvorgang des Pakets.

Ein Fehler im Bulk-Insert-Task führt nicht automatisch dazu, dass erfolgreich geladene Batches zurückgesetzt werden; ebenso werden Batches bei erfolgreicher Ausführung des Tasks nicht automatisch committet. Commit- und Rollbackvorgänge erfolgen nur als Reaktion auf Paket- und Workflow-Eigenschaftseinstellungen.

Quelle und Ziel

Beachten Sie Folgendes, wenn Sie den Speicherort der Quelltextdatei angeben:

  • Der Server muss die Berechtigung für den Zugriff auf die Datei und die Zieldatenbank besitzen.

  • Der Server führt die Aufgabe „Bulk Insert“ aus. Deshalb muss jede Formatdatei, die vom Task verwendet wird, auf dem Server gespeichert sein.

  • Die Quelldatei, die vom Masseneinfügungstask geladen wird, kann auf demselben Server wie die SQL Server -Datenbank, in die Daten eingefügt werden, oder auf einem Remoteserver gespeichert sein. Falls sich die Datei auf einem Remoteserver befindet, müssen Sie den Dateinamen mithilfe des UNC-Namens (Universal Naming Convention) im Pfad angeben.

Leistungsoptimierung

Beachten Sie bei der Optimierung der Leistung Folgendes:

  • Wenn sich die Textdatei auf demselben Computer wie die SQL Server -Datenbank befindet, in die Daten eingefügt werden, erfolgt der Kopiervorgang sogar noch schneller, weil die Daten nicht im Netzwerk verschoben werden.

  • Der Task „Masseneinfügung“ protokolliert fehlerverursachende Zeilen nicht. Um diese Informationen aufzuzeichnen, können Sie mit den Fehlerausgaben von Datenflusskomponenten Zeilen, die Fehler verursachen, in einer Ausnahmedatei aufzeichnen.

Benutzerdefinierte Protokolleinträge für die Bulk-Insert-Aufgabe verfügbar

In der folgenden Tabelle sind die benutzerdefinierten Protokolleinträge für den Task für Masseneinfügung aufgeführt. Weitere Informationen finden Sie unter Integration Services (SSIS) Logging and Custom Messages for Logging.

Protokolleintrag Description
BulkInsertTaskBegin Gibt an, dass der Masseneinfügungsvorgang begann.
BulkInsertTaskEnd Gibt an, dass der Masseneinfügungsvorgang abgeschlossen wurde.
BulkInsertTaskInfos Enthält beschreibende Informationen zum Task.

Konfiguration der Masseneinfügeaufgabe

Sie können die Aufgabe für das Masseneinfügen wie folgt konfigurieren:

  • Geben Sie den OLE DB-Verbindungs-Manager zum Herstellen der Verbindung mit der SQL Server -Zieldatenbank und der Tabelle oder Sicht an, in die Daten eingefügt werden. Der Massenimport-Task unterstützt nur OLE DB-Verbindungen für die Zieldatenbank.

  • Geben Sie den Datei- oder Flatfile-Verbindungs-Manager an, um auf die Quelldatei zuzugreifen. Der Masseneinfüge-Task verwendet den Verbindungs-Manager nur für den Speicherort der Quelldatei. Der Task ignoriert andere Optionen, die Sie im Verbindungs-Manager-Editor auswählen.

  • Definieren Sie das vom Masseneinfügungstask verwendete Format, indem Sie eine Formatdatei verwenden oder die Spalten- und Zeilentrennzeichen der Quelldaten definieren. Falls Sie eine Formatdatei verwenden, geben Sie den Dateiverbindungs-Manager für den Zugriff auf die Formatdatei an.

  • Geben Sie an, welche Aktionen für die Zieltabelle oder -View ausgeführt werden sollen, wenn der Task die Daten einfügt. Die Optionen umfassen, ob Einschränkungen überprüft, Identitätseinfügungen aktiviert, NULL-Werte beibehalten, Trigger ausgelöst oder die Tabelle gesperrt werden sollen.

  • Stellen Sie Informationen zum einzufügenden Datenbatch bereit, wie z. B. die Batchgröße, die erste und letzte Zeile aus der einzufügenden Datei, die Anzahl von INSERT-Fehlern, nach der der Task das Einfügen von Zeilen beendet, sowie die Namen der zu sortierenden Spalten.

Wenn der Masseneinfügungstask für den Zugriff auf die Quelldatei einen Verbindungs-Manager für Flatfiles verwendet, verwendet der Task nicht das im Verbindungs-Manager für Flatfiles angegebene Format. Stattdessen verwendet der Bulk Insert-Task entweder das in einer Formatdatei angegebene Format oder die Werte der Eigenschaften RowDelimiter und ColumnDelimiter des Tasks.

Sie können Eigenschaften mit dem SSIS -Designer oder programmgesteuert festlegen.

Klicken Sie auf eines der folgenden Themen, um weitere Informationen zu den Eigenschaften zu erhalten, die Sie im SSIS -Designer festlegen können:

Weitere Informationen zum Festlegen dieser Eigenschaften in SSIS Designer finden Sie im folgenden Thema:

Programmgesteuerte Konfiguration der Massenimportaufgabe

Klicken Sie auf das folgende Thema, um weitere Informationen zum programmgesteuerten Festlegen dieser Eigenschaften anzuzeigen:

Festlegen der Eigenschaften eines Tasks oder Containers