SqlBulkCopy.DestinationTableName Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Nazwa tabeli docelowej na serwerze.
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
Wartość właściwości
Wartość DestinationTableName ciągu właściwości lub null, jeśli nie została dostarczona żadna.
Przykłady
W poniższej aplikacji konsolowej pokazano, jak zbiorczo ładować dane przy użyciu połączenia, które jest już otwarte. Tabela docelowa jest tabelą w bazie danych AdventureWorks .
W tym przykładzie połączenie jest najpierw używane do odczytywania danych z tabeli SQL Server do SqlDataReader wystąpienia. Dane źródłowe nie muszą znajdować się na SQL Server. Można użyć dowolnego źródła danych, które można odczytać do obiektu IDataReader lub załadować do obiektu DataTable.
Ważne
Ten przykład nie zostanie uruchomiony, chyba że tabele robocze zostały utworzone zgodnie z opisem w temacie Konfiguracja przykładu kopiowania zbiorczego.
Ten kod jest dostarczany w celu zademonstrowania składni tylko przy użyciu narzędzia SqlBulkCopy . Jeśli tabele źródłowe i docelowe znajdują się w tym samym wystąpieniu SQL Server, łatwiej i szybciej używać instrukcji Języka Transact-SQL INSERT … SELECT
do kopiowania danych.
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;";
}
}
Uwagi
Jeśli DestinationTableName parametr nie został ustawiony po WriteToServer wywołaniu, ArgumentNullException zostanie zgłoszony element . Jeśli DestinationTableName operacja jest modyfikowana, WriteToServer zmiana nie ma wpływu na bieżącą operację. Nowa DestinationTableName wartość jest używana przy następnym WriteToServer wywołaniu metody.
DestinationTableName to trzyczęściowa nazwa (<database>.<owningschema>.<name>
). Jeśli wybierzesz, możesz zakwalifikować nazwę tabeli z jej bazą danych i schematem właścicielem.
Jeśli jednak nazwa tabeli używa znaku podkreślenia ("_") lub innych znaków specjalnych, należy użyć nazwy przy użyciu nawiasów otaczających w formacie ([<database>.<owningschema>.<name_01>]
).
Dane można kopiować zbiorczo do tabeli tymczasowej przy użyciu wartości, takiej jak tempdb..#table
lub tempdb.<owner>.#table
dla DestinationTableName właściwości.