Aracılığıyla paylaş


SqlBulkCopyOptions Sabit listesi

Tanım

bir örneğiyle SqlBulkCopykullanılacak bir veya daha fazla seçeneği belirten bit düzeyinde bayrak.

Bu sabit listesi, üyeleri için bit düzeyinde karşılaştırmayı destekler.

public enum class SqlBulkCopyOptions
[System.Flags]
public enum SqlBulkCopyOptions
[<System.Flags>]
type SqlBulkCopyOptions = 
Public Enum SqlBulkCopyOptions
Devralma
SqlBulkCopyOptions
Öznitelikler

Alanlar

Name Değer Description
AllowEncryptedValueModifications 64

Belirtildiğinde AllowEncryptedValueModifications , şifrelenmiş verilerin verilerin şifresini çözmeden tablolar veya veritabanları arasında toplu olarak kopyalanmasını sağlar. Genellikle, bir uygulama verilerin şifresini çözmeden bir tablodaki şifrelenmiş sütunlardan verileri seçer (uygulama, sütun şifreleme ayarı anahtar sözcüğü devre dışı olarak ayarlanmış şekilde veritabanına bağlanır) ve ardından verileri toplu olarak eklemek için bu seçeneği kullanır ve bu seçenek hala şifrelenmiştir.

AllowEncryptedValueModifications değerini belirtirken dikkatli olun çünkü sürücü verilerin gerçekten şifrelenip şifrelenmediğini veya hedef sütunla aynı şifreleme türü, algoritma ve anahtar kullanılarak doğru şekilde şifrelenip şifrelenmediğini denetlemediğinden veritabanının bozulmasına neden olabilir.

CheckConstraints 2

Veriler eklenirken kısıtlamaları denetleyin. Varsayılan olarak, kısıtlamalar işaretlenmez.

Default 0

Tüm seçenekler için varsayılan değerleri kullanın.

FireTriggers 16

Belirtildiğinde, sunucunun veritabanına eklenen satırlar için ekleme tetikleyicilerini tetiklemesini sağlayın.

KeepIdentity 1

Kaynak kimlik değerlerini koruma. Belirtilmediğinde, kimlik değerleri hedef tarafından atanır.

KeepNulls 8

Varsayılan değerlerin ayarlarından bağımsız olarak hedef tablodaki null değerleri koruyun. Belirtilmediğinde, null değerler varsa varsayılan değerlerle değiştirilir.

TableLock 4

Toplu kopyalama işlemi süresi boyunca toplu güncelleştirme kilidi alın. Belirtilmediğinde satır kilitleri kullanılır.

UseInternalTransaction 32

Belirtildiğinde, toplu kopyalama işleminin her toplu işlemi bir işlem içinde gerçekleşir. Bu seçeneği belirtir ve oluşturucuya bir SqlTransaction nesne de sağlarsanız, bir ArgumentException oluşur.

Örnekler

Aşağıdaki konsol uygulaması, her satırın kimlik sütunu için yeni bir değer oluşturmak yerine kaynak tablonun kimlik sütunundaki değeri hedef tablodaki ilgili sütuna kopyalayan bir toplu yükleme gerçekleştirmeyi gösterir.

Seçeneğin toplu yüklemenin çalışma şeklini nasıl değiştirdiğini görmek için örneği dbo ile çalıştırın. BulkCopyDemoMatchingColumns tablosu boş. Tüm satırlar kaynaktan yüklenir. Ardından, tabloyu boşaltmadan örneği yeniden çalıştırın. Özel durum oluşturulur ve kod konsol penceresine birincil anahtar ihlalleri nedeniyle satırların eklenmediğini bildiren bir ileti yazar.

Önemli

İş tablolarını Toplu Kopyalama Örneği Kurulumu'nda açıklandığı gibi oluşturmadığınız sürece bu örnek çalışmaz. Bu kod, yalnızca SqlBulkCopy kullanımına yönelik söz dizimini göstermek için sağlanır. Kaynak ve hedef tablolar aynı SQL Server örnekteyse, verileri kopyalamak için Transact-SQL INSERT … SELECT deyimi kullanmak daha kolay ve daha hızlıdır.

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

            // Create the SqlBulkCopy object using a connection string 
            // and the KeepIdentity option. 
            // In the real world you would not use SqlBulkCopy to move
            // data from one table to the other in the same database.
            using (SqlBulkCopy bulkCopy =
                new SqlBulkCopy(connectionString, SqlBulkCopyOptions.KeepIdentity))
            {
                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;";
    }
}
// </Snippet1>

Açıklamalar

Bir örnek oluştururkenSqlBulkCopy, bu örneğin yöntemlerinin davranışını değiştirmek için numaralandırmayı WriteToServer kullanabilirsinizSqlBulkCopyOptions.

Şunlara uygulanır