Vorbereiten des Massenimports von Daten (SQL Server)Prepare to Bulk Import Data (SQL Server)

DIESES THEMA GILT FÜR:jaSQL Server (ab 2008)neinAzure SQL-DatenbankneinAzure SQL Data Warehouse neinParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Sie können den Befehl bcp , die BULK INSERT-Anweisung oder die OPENROWSET(BULK)-Funktion nur für den Massenimport von Daten aus einer Datendatei verwenden.You can use the bcp command, BULK INSERT statement, or OPENROWSET(BULK) function to bulk import data from a data file only.

Hinweis

Es ist möglich, eine benutzerdefinierte Anwendung zu schreiben, die einen Massenimport von Daten von anderen Objekten als einer Textdatei durchführt.It is possible to write a custom application that bulk imports data from objects other than a text file. Für einen Massenimport von Daten aus Speicherpuffern verwenden Sie entweder die BCP-Erweiterungen in der SQL ServerSQL Server Native Client (ODBC)-API (Application Programming Interface) oder der OLE DB-Schnittstelle IRowsetFastLoad .To bulk import data from memory buffers, use either the bcp extensions to the SQL ServerSQL Server Native Client (ODBC) application programming interface (API) or the OLE DB IRowsetFastLoad interface. Für den Massenimport von Daten aus einer C#-Datentabelle verwenden Sie die ADO.NET-API für Massenkopiervorgänge SqlBulkCopy.To bulk import data from a C# data table, use the ADO.NET bulk-copy API, SqlBulkCopy.

Hinweis

Der Massenimport von Daten in eine Remotetabelle wird nicht unterstützt.Bulk importing data into a remote table is not supported.

Befolgen Sie beim Massenimport von Daten aus einer Datendatei in eine Instanz von MicrosoftMicrosoft SQL ServerSQL Serverdiese Richtlinien:Use the following guidelines when you bulk import data from a data file to an instance of MicrosoftMicrosoft SQL ServerSQL Server:

  • Erlangen Sie die erforderlichen Berechtigungen für Ihr Benutzerkonto.Obtain required permissions for your user account.

    Das Benutzerkonto, in dem Sie das Hilfsprogramm bcp, die BULK INSERT-Anweisung oder die INSERT ... SELECT * FROM OPENROWSET(BULK...)-Anweisung verwenden, muss über die erforderlichen Berechtigungen für die Tabelle verfügen (zugewiesen vom Tabellenbesitzer).The user account in which you use the bcp utility, the BULK INSERT statement, or the INSERT ... SELECT * FROM OPENROWSET(BULK...) statement must have the required permissions on the table, which are assigned by the table owner. Weitere Informationen zu den Berechtigungen, die von jeder Methode benötigt werden, finden Sie unter bcp (Hilfsprogramm), OPENROWSET (Transact-SQL) und BULK INSERT (Transact-SQL).For more information about permissions that are required by each method, see bcp Utility, OPENROWSET (Transact-SQL), and BULK INSERT (Transact-SQL).

  • Verwenden Sie das massenprotokollierte Wiederherstellungsmodell.Use the bulk-logged recovery model.

    Diese Richtlinie gilt für eine Datenbank, die das vollständige Wiederherstellungsmodell verwendet.This guideline is for a database that uses the full recovery model. Das massenprotokollierte Wiederherstellungsmodell ist beim Ausführen von Massenvorgängen in einer nicht indizierten Tabelle von Nutzen (in einem Heap).The bulk-logged recovery model is useful when performing bulk operations into an unindexed table (a heap). Mit der massenprotokollierten Wiederherstellung wird verhindert, dass der Speicherplatz des Transaktionsprotokolls vollständig belegt wird, weil Zeileneinfügungen im Protokoll von der massenprotokollierten Wiederherstellung nicht ausgeführt werden.Using bulk-logged recovery helps prevent the transaction log from running out of space because bulk-logged recovery does not perform log row inserts. Weitere Informationen zum massenprotokollierten Wiederherstellungsmodell finden Sie unter Wiederherstellungsmodelle (SQL Server).For more information about the bulk-logged recovery model, see Recovery Models (SQL Server).

    Es wird empfohlen, für die Datenbank unmittelbar vor dem Massenimportvorgang die Verwendung des massenprotokollierten Wiederherstellungsmodells festzulegen.We recommend that you change the database to use the bulk-logged recovery model immediately before the bulk import operation. Unmittelbar danach sollten Sie die Datenbank wieder auf das vollständige Wiederherstellungsmodell zurücksetzen.Immediately afterwards, you should reset the database to the full recovery model. Weitere Informationen finden Sie unter Anzeigen oder Ändern des Wiederherstellungsmodells einer Datenbank (SQL Server).For more information, see View or Change the Recovery Model of a Database (SQL Server).

    Hinweis

    Weitere Informationen zur minimalen Protokollierung während Massenimportvorgängen finden Sie unter Voraussetzungen für die minimale Protokollierung beim Massenimport.more information about how to minimize logging during bulk import operations, see Prerequisites for Minimal Logging in Bulk Import.

  • Führen Sie nach dem Massenimport von Daten eine Sicherung aus.Back up after bulk importing data.

    Für eine Datenbank, die das einfache Wiederherstellungsmodell verwendet, sollten Sie eine vollständige oder eine differenzielle Sicherung ausführen, nachdem der Massenimportvorgang abgeschlossen ist.For a database that uses the simple recovery model, we recommend that you take a full or differential backup after the bulk-import operation finishes. Weitere Informationen finden Sie unter Erstellen einer vollständigen Datenbanksicherung (SQL Server) und Erstellen einer differenziellen Datenbanksicherung (SQL Server).For more information, see Create a Full Database Backup (SQL Server) or Create a Differential Database Backup (SQL Server).

    Für das massenprotokollierte Wiederherstellungsmodell oder das vollständige Wiederherstellungsmodell ist eine Protokollsicherung ausreichend.For the bulk-logged recovery model or full recovery model, a log backup is enough. Weitere Informationen finden Sie unter Transaktionsprotokollsicherungen (SQL Server).For more information, see Transaction Log Backups (SQL Server).

  • Löschen Sie Tabellenindizes, um die Leistung bei großen Massenimporten zu verbessern.Drop table indexes to improve performance for large bulk imports.

    Diese Richtlinie gilt für Situationen, in denen Sie im Vergleich zu den bereits in der Tabelle enthaltenen Datenmengen eine sehr große Datenmenge importieren.This guideline is for when you are importing a large amount of data compared to the amount of data that is already in the table. In diesem Fall kann das Löschen der Indizes aus der Tabelle vor dem Ausführen des Massenimportvorgangs die Leistung erheblich steigern.In this case, dropping the indexes from the table before you perform the bulk-import operation can significantly increase performance.

    Hinweis

    Wenn Sie hingegen eine kleine Menge an Daten (im Vergleich zur Menge der bereits in der Tabelle enthaltenen Daten) laden möchten, ist das Löschen der Indizes kontraproduktiv.If you are loading a small amount of data compared to the amount of data already in the table, dropping the indexes is counterproductive. Das erneute Erstellen dieser Indizes könnte länger dauern als die Zeitersparnis durch den Massenimportvorgang.The time required to rebuild the indexes might be longer than the time saved during the bulk-import operation.

  • Suchen und entfernen Sie verborgene Zeichen in der Datendatei.Find and remove hidden characters in the data file.

    Viele Hilfsprogramme und Text-Editoren zeigen ausgeblendete Zeichen an, die sich in der Regel am Ende der Datendatei befinden.Many utilities and text editors display hidden characters, which are usually at the end of the data file. Ausgeblendete Zeichen in einer ASCII-Datendatei können während eines Massenimportvorgangs Probleme verursachen. Dies kann zu einer Fehlermeldung führen, in der das Auffinden einer unerwarteten Null gemeldet wird.During a bulk-import operation, hidden characters in an ASCII data file can cause problems that cause an error of "unexpected null found". Sie können das Problem normalerweise lösen, wenn Sie alle ausgeblendeten Zeichen suchen und entfernen.Finding and removing all the hidden characters should help prevent this problem.

Siehe auchSee Also

Importieren und Exportieren von Massendaten mithilfe des bcp-Hilfsprogramms (SQL Server) Import and Export Bulk Data by Using the bcp Utility (SQL Server)
Importieren von Massendaten mithilfe von BULK INSERT oder OPENROWSET(BULK...) (SQL Server) Import Bulk Data by Using BULK INSERT or OPENROWSET(BULK...) (SQL Server)
bcp (Hilfsprogramm) bcp Utility
BULK INSERT (Transact-SQL) BULK INSERT (Transact-SQL)
Datenformate für Massenimport oder Massenexport (SQL Server) Data Formats for Bulk Import or Bulk Export (SQL Server)
OPENROWSET (Transact-SQL) OPENROWSET (Transact-SQL)