Auf Englisch lesen

Freigeben über


SqlBulkCopy.DestinationTableName Eigenschaft

Definition

Name der Zieltabelle auf dem Server.

C#
public string DestinationTableName { get; set; }

Eigenschaftswert

Der Zeichenfolgenwert der DestinationTableName-Eigenschaft oder NULL, wenn kein Wert angegeben wurde.

Beispiele

Die folgende Konsolenanwendung veranschaulicht das Massenladen von Daten mithilfe einer bereits geöffneten Verbindung. Die Zieltabelle ist eine Tabelle in der AdventureWorks-Datenbank .

In diesem Beispiel wird die Verbindung zuerst verwendet, um Daten aus einer SQL Server Tabelle in eine SqlDataReader instance zu lesen. Die Quelldaten müssen sich nicht auf SQL Server befinden. Sie können eine beliebige Datenquelle verwenden, die in eine IDataReader gelesen oder in eine DataTablegeladen werden kann.

Wichtig

Dieses Beispiel wird nur ausgeführt, wenn Sie die Arbeitstabellen zuvor wie unter Massenkopierbeispiel-Einrichtung beschrieben erstellt haben. Der angegebene Code dient nur zur Demonstration der Syntax für die Verwendung von SqlBulkCopy. Wenn sich die Quell- und Zieltabellen in derselben SQL Server instance befinden, ist es einfacher und schneller, eine Transact-SQL-Anweisung INSERT ... SELECT zum Kopieren der Daten zu verwenden.

C#
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;";
    }
}

Hinweise

Wenn DestinationTableName nicht festgelegt wurde, wenn WriteToServer aufgerufen wird, wird ein ArgumentNullException ausgelöst.

Wenn DestinationTableName während der Ausführung eines Vorgangs WriteToServer geändert wird, wirkt sich die Änderung nicht auf den aktuellen Vorgang aus. Der neue DestinationTableName Wert wird beim nächsten Aufruf einer WriteToServer Methode verwendet.

DestinationTableName ist ein aus drei Teilen bestehender Name (<database>.<owningschema>.<name>). Sie können den Tabellennamen mit seiner Datenbank und dem besitzenden Schema qualifizieren, wenn Sie das wünschen. Wenn der Tabellenname jedoch einen Unterstrich ("_") oder andere Sonderzeichen verwendet, müssen Sie den Namen mithilfe von umgebenden Klammern wie in ([<database>.<owningschema>.<name_01>]) mit escapen. Weitere Informationen finden Sie unter Datenbankbezeichner.

Sie können Daten mithilfe eines Werts wie tempdb..#table oder tempdb.<owner>.#table für die DestinationTableName -Eigenschaft in eine temporäre Tabelle massenkopieren.

Gilt für:

Produkt Versionen
.NET Core 1.0, Core 1.1, 6 (package-provided), 7 (package-provided), 8 (package-provided), 9 (package-provided), 10 (package-provided)
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0 (package-provided)

Weitere Informationen