Share via


SqlBulkCopyColumnOrderHintCollection 클래스

정의

SqlBulkCopyColumnOrderHint 에서 상속되는 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
상속
SqlBulkCopyColumnOrderHintCollection

예제

다음 예제에서는 AdventureWorks 샘플 데이터베이스의 원본 테이블에서 동일한 데이터베이스의 대상 테이블로 데이터를 대량 복사합니다. SqlBulkCopyColumnOrderHint는 대량 복사 작업에 대한 순서 힌트를 SqlBulkCopy 지정하기 위해 개체의 에 추가 SqlBulkCopyColumnOrderHintCollection 됩니다.

중요

이 샘플은 가져올 대량 복사 샘플 설정에 설명된 대로 작업 테이블을 만들지 않은 경우 실행되지 않습니다. 이 코드는 SqlBulkCopy를 사용하는 구문을 보여 주는 용도로 제공됩니다. 원본 테이블과 대상 테이블이 동일한 SQL Server 인스턴스에 있는 경우 Transact-SQL INSERT … SELECT 문을 사용하여 데이터를 복사하는 것이 더 쉽고 빠릅니다.

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

설명

열 순서 힌트는 대상 테이블에서 열의 정렬 순서를 정의합니다.

가져오는 데이터가 테이블의 클러스터형 인덱스(있는 경우)에 따라 정렬되면 SqlBulkCopy의 성능이 향상됩니다. 데이터가 클러스터형 인덱스 키의 순서와 다른 순서로 정렬되거나 테이블에 클러스터형 인덱스가 없으면 순서 힌트가 무시됩니다.

대상 테이블의 열 수에 대해 순서 힌트를 지정할 수 있습니다. 기본적으로 대량 삽입 작업은 힌트가 제공되지 않으면 데이터의 순서가 지정되지 않은 것으로 가정합니다.

지정한 열 이름은 대상 테이블에서 올바른 열 이름이어야 합니다. 힌트를 지정할 수 있는 순서는 임의입니다. 단일 열 이름을 두 번 이상 지정할 수 없습니다.

컬렉션이 ColumnMappings 비어 있지 않으면 매핑된 유효한 대상 열에 대해서만 주문 힌트를 제공할 수 있습니다.

SortOrder 지정되지 않은 의 가 지정되지 않은 경우 이 ArgumentException throw됩니다.

생성자

SqlBulkCopyColumnOrderHintCollection()

SqlBulkCopyColumnOrderHint 에서 상속되는 CollectionBase개체의 컬렉션입니다.

속성

Item[Int32]

지정된 인덱스의 SqlBulkCopyColumnOrderHint 개체를 가져옵니다.

메서드

Add(SqlBulkCopyColumnOrderHint)

지정된 순서 힌트를 에 추가합니다 SqlBulkCopyColumnOrderHintCollection.

Add(String, SortOrder)

SqlBulkCopyColumnOrderHint를 만들어 컬렉션에 추가합니다.

Clear()

SqlBulkCopyColumnOrderHint 에서 상속되는 CollectionBase개체의 컬렉션입니다.

Contains(SqlBulkCopyColumnOrderHint)

지정된 SqlBulkCopyColumnOrderHint 개체가 컬렉션에 있는지 여부를 나타내는 값을 가져옵니다.

CopyTo(SqlBulkCopyColumnOrderHint[], Int32)

SqlBulkCopyColumnOrderHintCollection의 요소를 SqlBulkCopyColumnOrderHint 항목 배열의 특정 인덱스에서 시작하는 위치에 복사합니다.

IndexOf(SqlBulkCopyColumnOrderHint)

지정된 SqlBulkCopyColumnOrderHint 개체의 인덱스를 가져옵니다.

Insert(Int32, SqlBulkCopyColumnOrderHint)

SqlBulkCopyColumnOrderHint을 지정된 인덱스에 삽입합니다.

Remove(SqlBulkCopyColumnOrderHint)

SqlBulkCopyColumnOrderHint에서 지정된 SqlBulkCopyColumnOrderHintCollection요소를 제거합니다.

RemoveAt(Int32)

SqlBulkCopyColumnOrderHint 에서 상속되는 CollectionBase개체의 컬렉션입니다.

적용 대상