Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

SqlBulkCopy-Klasse

 

Ermöglicht den effizienten Massenladevorgang einer SQL Server-Tabelle mit Daten aus einer anderen Quelle.

Namespace:   System.Data.SqlClient
Assembly:  System.Data (in System.Data.dll)

System.Object
  System.Data.SqlClient.SqlBulkCopy

public sealed class SqlBulkCopy : IDisposable

NameBeschreibung
System_CAPS_pubmethodSqlBulkCopy(SqlConnection)

Initialisiert eine neue Instanz der SqlBulkCopy-Klasse unter Verwendung der angegebenen Instanz von SqlConnection.

System_CAPS_pubmethodSqlBulkCopy(SqlConnection, SqlBulkCopyOptions, SqlTransaction)

Initialisiert eine neue Instanz der SqlBulkCopy-Klasse mithilfe der bereitgestellten vorhandenen geöffneten Instanz von SqlConnection. Die SqlBulkCopy-Instanz verhält sich entsprechend den Optionen, die im copyOptions-Parameter bereitgestellt werden. Wenn eine SqlTransaction ungleich Null angegeben wird, erfolgen die Kopiervorgänge innerhalb dieser Transaktion.

System_CAPS_pubmethodSqlBulkCopy(String)

Initialisiert und öffnet eine neue Instanz von SqlConnection auf Grundlage der angegebenen connectionString. Im Konstruktor wird die SqlConnection verwendet, um eine neue Instanz der SqlBulkCopy-Klasse zu initialisieren.

System_CAPS_pubmethodSqlBulkCopy(String, SqlBulkCopyOptions)

Initialisiert und öffnet eine neue Instanz von SqlConnection auf Grundlage der angegebenen connectionString. Im Konstruktor wird diese SqlConnection verwendet, um eine neue Instanz der SqlBulkCopy-Klasse zu initialisieren. Die SqlConnection-Instanz verhält sich entsprechend den Optionen, die im copyOptions-Parameter bereitgestellt werden.

NameBeschreibung
System_CAPS_pubpropertyBatchSize

Anzahl der Zeilen in jedem Batch. Am Ende jedes Batches werden die Zeilen im Batch an den Server gesendet.

System_CAPS_pubpropertyBulkCopyTimeout

Anzahl der Sekunden zum Abschließen des Vorgangs, bevor ein Timeout auftritt.

System_CAPS_pubpropertyColumnMappings

Gibt eine Auflistung von SqlBulkCopyColumnMapping-Elementen zurück. Spaltenzuordnungen definieren die Beziehungen zwischen Spalten in der Datenquelle und den Spalten im Ziel.

System_CAPS_pubpropertyDestinationTableName

Der Name der Zieltabelle auf dem Server.

System_CAPS_pubpropertyEnableStreaming

Aktiviert oder deaktiviert ein SqlBulkCopy-Objekt zum Streamen von Daten aus einem IDataReader-Objekt

System_CAPS_pubpropertyNotifyAfter

Definiert die Anzahl der Zeilen, die verarbeitet werden, bevor ein Benachrichtigungsereignis generiert wird.

NameBeschreibung
System_CAPS_pubmethodClose()

Schließt die SqlBulkCopy-Instanz.

System_CAPS_pubmethodEquals(Object)

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.(Geerbt von „Object“.)

System_CAPS_pubmethodGetHashCode()

Fungiert als die Standardhashfunktion.(Geerbt von „Object“.)

System_CAPS_pubmethodGetType()

Ruft den Type der aktuellen Instanz ab.(Geerbt von „Object“.)

System_CAPS_pubmethodToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.(Geerbt von „Object“.)

System_CAPS_pubmethodWriteToServer(DataRow[])

Kopiert alle Zeilen aus dem angegebenen DataRow-Array in eine Zieltabelle, die durch die DestinationTableName-Eigenschaft des SqlBulkCopy-Objekts angegeben ist.

System_CAPS_pubmethodWriteToServer(DataTable)

Kopiert alle Zeilen in der angegebenen DataTable in eine Zieltabelle, die durch die DestinationTableName-Eigenschaft des SqlBulkCopy-Objekts festgelegt wird.

System_CAPS_pubmethodWriteToServer(DataTable, DataRowState)

Kopiert nur die Zeilen, die dem angegebenen Zeilenstatus in der bereitgestellten DataTable entsprechen, in eine Zieltabelle, die durch die DestinationTableName-Eigenschaft des SqlBulkCopy-Objekts angegeben ist.

System_CAPS_pubmethodWriteToServer(DbDataReader)

Kopiert alle Zeilen aus dem angegebenen DbDataReader-Array in eine Zieltabelle, die durch die DestinationTableName-Eigenschaft des SqlBulkCopy-Objekts angegeben ist.

System_CAPS_pubmethodWriteToServer(IDataReader)

Kopiert alle Zeilen im angegebenen IDataReader in eine Zieltabelle, die durch die DestinationTableName-Eigenschaft des SqlBulkCopy-Objekts festgelegt wird.

System_CAPS_pubmethodWriteToServerAsync(DataRow[])

Die asynchrone Version von WriteToServer, mit der alle Zeilen aus dem bereitgestellten DataRow-Array in eine Zieltabelle kopiert werden, die durch die DestinationTableName-Eigenschaft des SqlBulkCopy-Objekts angegeben ist.

System_CAPS_pubmethodWriteToServerAsync(DataRow[], CancellationToken)

Die asynchrone Version von WriteToServer, mit der alle Zeilen aus dem bereitgestellten DataRow-Array in eine Zieltabelle kopiert werden, die durch die DestinationTableName-Eigenschaft des SqlBulkCopy-Objekts angegeben ist.

Das Abbruchtoken kann verwendet werden, um anzufordern, dass der Vorgang abgebrochen wird, bevor das Timeout des Befehls abläuft. Ausnahmen werden über das zurückgegebene Taskobjekt gemeldet.

System_CAPS_pubmethodWriteToServerAsync(DataTable)

Die asynchrone Version von WriteToServer, mit der alle Zeilen im bereitgestellten DataTable in eine Zieltabelle kopiert werden, die durch die DestinationTableName-Eigenschaft des SqlBulkCopy-Objekts angegeben ist.

System_CAPS_pubmethodWriteToServerAsync(DataTable, CancellationToken)

Die asynchrone Version von WriteToServer, mit der alle Zeilen im bereitgestellten DataTable in eine Zieltabelle kopiert werden, die durch die DestinationTableName-Eigenschaft des SqlBulkCopy-Objekts angegeben ist.

Das Abbruchtoken kann verwendet werden, um anzufordern, dass der Vorgang abgebrochen wird, bevor das Timeout des Befehls abläuft. Ausnahmen werden über das zurückgegebene Taskobjekt gemeldet.

System_CAPS_pubmethodWriteToServerAsync(DataTable, DataRowState)

Die asynchrone Version von WriteToServer, die nur die Zeilen, die dem angegebenen Zeilenstatus in der bereitgestellten DataTable entsprechen, in eine Zieltabelle kopiert, die durch die DestinationTableName-Eigenschaft des SqlBulkCopy-Objekts angegeben ist.

System_CAPS_pubmethodWriteToServerAsync(DataTable, DataRowState, CancellationToken)

Die asynchrone Version von WriteToServer, die nur die Zeilen, die dem angegebenen Zeilenstatus in der bereitgestellten DataTable entsprechen, in eine Zieltabelle kopiert, die durch die DestinationTableName-Eigenschaft des SqlBulkCopy-Objekts angegeben ist.

Das Abbruchtoken kann verwendet werden, um anzufordern, dass der Vorgang abgebrochen wird, bevor das Timeout des Befehls abläuft. Ausnahmen werden über das zurückgegebene Taskobjekt gemeldet.

System_CAPS_pubmethodWriteToServerAsync(DbDataReader)

Die asynchrone Version von WriteToServer, mit der alle Zeilen aus dem bereitgestellten DbDataReader-Array in eine Zieltabelle kopiert werden, die durch die DestinationTableName-Eigenschaft des SqlBulkCopy-Objekts angegeben ist.

System_CAPS_pubmethodWriteToServerAsync(DbDataReader, CancellationToken)

Die asynchrone Version von WriteToServer, mit der alle Zeilen aus dem bereitgestellten DbDataReader-Array in eine Zieltabelle kopiert werden, die durch die DestinationTableName-Eigenschaft des SqlBulkCopy-Objekts angegeben ist.

System_CAPS_pubmethodWriteToServerAsync(IDataReader)

Die asynchrone Version von WriteToServer, mit der alle Zeilen im bereitgestellten IDataReader in eine Zieltabelle kopiert werden, die durch die DestinationTableName-Eigenschaft des SqlBulkCopy-Objekts angegeben ist.

System_CAPS_pubmethodWriteToServerAsync(IDataReader, CancellationToken)

Die asynchrone Version von WriteToServer, mit der alle Zeilen im bereitgestellten IDataReader in eine Zieltabelle kopiert werden, die durch die DestinationTableName-Eigenschaft des SqlBulkCopy-Objekts angegeben ist.

Das Abbruchtoken kann verwendet werden, um anzufordern, dass der Vorgang abgebrochen wird, bevor das Timeout des Befehls abläuft. Ausnahmen werden über das zurückgegebene Taskobjekt gemeldet.

NameBeschreibung
System_CAPS_pubeventSqlRowsCopied

Tritt jedes Mal auf, wenn die durch die NotifyAfter-Eigenschaft angegebene Anzahl von Zeilen verarbeitet wurde.

NameBeschreibung
System_CAPS_pubinterfaceSystem_CAPS_privmethodIDisposable.Dispose()

Gibt alle von der aktuellen Instanz der SqlBulkCopy-Klasse verwendeten Ressourcen frei.

Microsoft SQL Server enthält eine beliebte-Befehlszeilenprogramm namens Bcp zum Verschieben von Daten aus einer Tabelle in eine andere, ob auf einem einzelnen Server oder zwischen Servern. Die SqlBulkCopy -Klasse können Sie die Lösungen mit verwaltetem Code zu schreiben, die ähnliche Funktionalität bereitstellen. Es gibt weitere Methoden zum Laden von Daten in eine SQL Server-Tabelle (INSERT-Anweisungen, z. B.), aber SqlBulkCopy bietet einen deutlichen Vorteil darüber.

Mit der SqlBulkCopy-Klasse können Daten nur in SQL Server-Tabellen geschrieben werden. Die Datenquelle ist jedoch nicht auf SQL Server beschränkt; kann beliebige Datenquellen verwendet werden, solange auf die Daten geladen werden können eine DataTable -Instanz oder durch Lesen einer IDataReader Instanz.

SqlBulkCopy Tritt ein Fehler beim Massenladen einer DataTable Spalte vom Typ SqlDateTime in eine SQL Server Spalte, deren Typ die Datum/Uhrzeit-Typen ist, die in SQL Server 2008 hinzugefügt.

In der folgenden Konsolenanwendung wird veranschaulicht, wie Daten mithilfe der SqlBulkCopy-Klasse geladen werden. In diesem Beispiel eine SqlDataReader Dient zum Kopieren von Daten aus der Production.Product -Tabelle in der SQL ServerAdventureWorks Datenbank in eine ähnliche Tabelle in derselben Datenbank.

System_CAPS_importantWichtig

Dieses Beispiel wird nur ausgeführt, wenn Sie die Arbeitstabellen, wie in Beispiel für die Massenkopiereinrichtung beschrieben, erstellt haben. Der angegebene Code dient nur zur Demonstration der Syntax für die Verwendung von SqlBulkCopy. Wenn Quell-und Ziel in derselben SQL Server-Instanz befinden, ist es einfacher und schneller mit einer Transact-SQL INSERT … SELECT Anweisung, um die Daten zu kopieren.

using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = GetConnectionString();
        // Open a sourceConnection to the AdventureWorks database.
        using (SqlConnection sourceConnection =
                   new SqlConnection(connectionString))
        {
            sourceConnection.Open();

            // Perform an initial count on the destination table.
            SqlCommand commandRowCount = new SqlCommand(
                "SELECT COUNT(*) FROM " +
                "dbo.BulkCopyDemoMatchingColumns;",
                sourceConnection);
            long countStart = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Starting row count = {0}", countStart);

            // Get data from the source table as a SqlDataReader.
            SqlCommand commandSourceData = new SqlCommand(
                "SELECT ProductID, Name, " +
                "ProductNumber " +
                "FROM Production.Product;", sourceConnection);
            SqlDataReader reader =
                commandSourceData.ExecuteReader();

            // Open the destination connection. In the real world you would 
            // not use SqlBulkCopy to move data from one table to the other 
            // in the same database. This is for demonstration purposes only.
            using (SqlConnection destinationConnection =
                       new SqlConnection(connectionString))
            {
                destinationConnection.Open();

                // Set up the bulk copy object. 
                // Note that the column positions in the source
                // data reader match the column positions in 
                // the destination table so there is no need to
                // map columns.
                using (SqlBulkCopy bulkCopy =
                           new SqlBulkCopy(destinationConnection))
                {
                    bulkCopy.DestinationTableName =
                        "dbo.BulkCopyDemoMatchingColumns";

                    try
                    {
                        // Write from the source to the destination.
                        bulkCopy.WriteToServer(reader);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                    finally
                    {
                        // Close the SqlDataReader. The SqlBulkCopy
                        // object is automatically closed at the end
                        // of the using block.
                        reader.Close();
                    }
                }

                // Perform a final count on the destination 
                // table to see how many rows were added.
                long countEnd = System.Convert.ToInt32(
                    commandRowCount.ExecuteScalar());
                Console.WriteLine("Ending row count = {0}", countEnd);
                Console.WriteLine("{0} rows were added.", countEnd - countStart);
                Console.WriteLine("Press Enter to finish.");
                Console.ReadLine();
            }
        }
    }

    private static string GetConnectionString()
        // To avoid storing the sourceConnection string in your code, 
        // you can retrieve it from a configuration file. 
    {
        return "Data Source=(local); " +
            " Integrated Security=true;" +
            "Initial Catalog=AdventureWorks;";
    }
}

.NET Framework
Verfügbar seit 2.0

Alle öffentlichen statischen Member ( Shared in Visual Basic) dieses Typs sind threadsicher. Die Threadsicherheit für Instanzmember ist nicht garantiert.

Zurück zum Anfang
Anzeigen: