SqlBulkCopy.DestinationTableName Proprietà
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Nome della tabella di destinazione nel 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
Valore della proprietà
Valore di stringa della proprietà DestinationTableName o null se non è stato fornito alcun valore.
Esempio
L'applicazione console seguente illustra come eseguire il caricamento bulk dei dati usando una connessione già aperta. La tabella di destinazione è una tabella nel database AdventureWorks .
In questo esempio la connessione viene usata per prima cosa per leggere i dati da una tabella SQL Server a un'istanza SqlDataReader di . Non è necessario che i dati di origine si trovino in SQL Server. È possibile utilizzare qualsiasi origine dati che possa essere letta in un oggetto IDataReader o caricata in un oggetto DataTable.
Importante
Questo esempio non verrà eseguito a meno che non siano state create le tabelle di lavoro, come descritto in Installazione dell'esempio di copia bulk.
Il codice viene fornito solo per illustrare la sintassi relativa all'uso di SqlBulkCopy. Se le tabelle di origine e di destinazione si trovano nella stessa istanza di SQL Server, è più semplice e veloce usare un'istruzione Transact-SQL INSERT … SELECT
per copiare i dati.
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;";
}
}
Commenti
Se DestinationTableName non è stato impostato quando WriteToServer viene chiamato , viene generata un'eccezione ArgumentNullException . Se DestinationTableName viene modificato durante l'esecuzione di un'operazione WriteToServer , la modifica non influisce sull'operazione corrente. Il nuovo DestinationTableName valore viene usato alla successiva chiamata di un WriteToServer metodo.
DestinationTableName è un nome in tre parti (<database>.<owningschema>.<name>
). Se si desidera, è possibile qualificare il nome della tabella con i relativi database e schema.
Tuttavia, se il nome della tabella usa un carattere di sottolineatura ("_") o qualsiasi altro carattere speciale, è necessario utilizzare parentesi quadre circostanti come in ([<database>.<owningschema>.<name_01>]
).
È possibile copiare in blocco i dati in una tabella temporanea usando un valore come tempdb..#table
o tempdb.<owner>.#table
per la DestinationTableName proprietà .