Compartir a través de


SqlBulkCopyColumnOrderHintCollection Clase

Definición

Colección de objetos SqlBulkCopyColumnOrderHint que hereda de CollectionBase.

public ref class SqlBulkCopyColumnOrderHintCollection sealed : System::Collections::CollectionBase
public sealed class SqlBulkCopyColumnOrderHintCollection : System.Collections.CollectionBase
type SqlBulkCopyColumnOrderHintCollection = class
    inherit CollectionBase
Public NotInheritable Class SqlBulkCopyColumnOrderHintCollection
Inherits CollectionBase
Herencia
SqlBulkCopyColumnOrderHintCollection

Ejemplos

En el ejemplo siguiente se copian de forma masiva datos de una tabla de origen en la base de datos de ejemplo AdventureWorks a una tabla de destino en la misma base de datos. SqlBulkCopyColumnOrderHintse agregan al SqlBulkCopyColumnOrderHintCollection del SqlBulkCopy objeto para especificar sugerencias de orden para la operación de copia masiva.

Importante

Este ejemplo no se ejecuta a menos que haya creado las tablas de trabajo como se describe en Configuración de ejemplos de copia masiva. Este código se proporciona para mostrar la sintaxis para usar SqlBulkCopy. Si las tablas de origen y destino están en la misma instancia de SQL Server, es más fácil y rápido usar una instrucción Transact-SQL INSERT … SELECT para copiar los datos.

using System;
using System.Data;
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();

            // Set up the bulk copy object. 
            using (SqlBulkCopy bulkCopy =
                       new SqlBulkCopy(connectionString))
            {
                bulkCopy.DestinationTableName =
                    "dbo.BulkCopyDemoMatchingColumns";

                // Specify the sort order for the ProductNumber column in 
                // the destination table.
                bulkCopy.ColumnOrderHints.Add("ProductNumber", SortOrder.Ascending);

                // Write from the source to the destination.
                try
                {
                    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;";
    }
}

Comentarios

Las sugerencias de orden de columna definen el criterio de ordenación de la columna en la tabla de destino.

El rendimiento de SqlBulkCopy se mejora si los datos que se importan se ordenan según el índice agrupado de la tabla, si existe. Si los datos se ordenan en un orden que difiere del orden de una clave de índice agrupada o si no hay ningún índice agrupado en la tabla, se omite la sugerencia de orden.

Las sugerencias de orden se pueden especificar para cualquier número de columnas de la tabla de destino. De forma predeterminada, la operación de inserción masiva supone que los datos no están ordenados si no se proporcionan sugerencias.

Los nombres de columna facilitados deben ser nombres válidos en la tabla de destino. El orden en que se pueden especificar sugerencias es arbitrario. No se puede especificar un nombre de columna única más de una vez.

Si la ColumnMappings colección no está vacía, las sugerencias de orden solo se pueden proporcionar para las columnas de destino válidas que se han asignado.

Si se proporciona un SortOrder de sin especificar, se producirá una ArgumentException excepción .

Constructores

SqlBulkCopyColumnOrderHintCollection()

Colección de objetos SqlBulkCopyColumnOrderHint que hereda de CollectionBase.

Propiedades

Item[Int32]

Obtiene el objeto SqlBulkCopyColumnOrderHint en el índice especificado.

Métodos

Add(SqlBulkCopyColumnOrderHint)

Agrega la sugerencia de orden especificada a SqlBulkCopyColumnOrderHintCollection.

Add(String, SortOrder)

Crea una nueva SqlBulkCopyColumnOrderHint y la agrega a la colección.

Clear()

Colección de objetos SqlBulkCopyColumnOrderHint que hereda de CollectionBase.

Contains(SqlBulkCopyColumnOrderHint)

Obtiene un valor que indica si existe un objeto SqlBulkCopyColumnOrderHint especificado en la colección.

CopyTo(SqlBulkCopyColumnOrderHint[], Int32)

Copia los elementos de SqlBulkCopyColumnOrderHintCollection en una matriz de elementos SqlBulkCopyColumnOrderHint, empezando en un índice concreto.

IndexOf(SqlBulkCopyColumnOrderHint)

Obtiene el índice del objeto SqlBulkCopyColumnOrderHint especificado.

Insert(Int32, SqlBulkCopyColumnOrderHint)

Inserta una nueva SqlBulkCopyColumnOrderHint en el índice especificado.

Remove(SqlBulkCopyColumnOrderHint)

Quita el elemento SqlBulkCopyColumnOrderHint especificado de la colección SqlBulkCopyColumnOrderHintCollection.

RemoveAt(Int32)

Colección de objetos SqlBulkCopyColumnOrderHint que hereda de CollectionBase.

Se aplica a