Freigeben über


SqlBulkCopy.DestinationTableName Eigenschaft

Definition

Name der Zieltabelle auf dem Server.

public:
 property System::String ^ DestinationTableName { System::String ^ get(); void set(System::String ^ value); };
public string DestinationTableName { get; set; }
member this.DestinationTableName : string with get, set
Public Property DestinationTableName As String

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 -Instanz 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 erstellt haben, wie unter Massenkopierbeispielsetup beschrieben. Der angegebene Code dient nur zur Demonstration der Syntax für die Verwendung von SqlBulkCopy. Wenn sich quell- und zieltabellen in derselben SQL Server Instanz befinden, ist es einfacher und schneller, eine Transact-SQL-Anweisung INSERT … SELECT zum Kopieren der Daten zu verwenden.

using Microsoft.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, wann 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 in umgebenden Klammern wie in ([<database>.<owningschema>.<name_01>]) mit Escapezeichen versehen.

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

Gilt für: