Aracılığıyla paylaş


İçin toplu almayı toplu işlemleri yönetme

Bu bölümde, bir toplu alma işlemi için toplu iş boyutu belirleme yönetmek anlatılmaktadır.Varsayılan olarak, veri dosyasındaki tüm satırlar bilinmeyen boyutta tek bir işlemle tek bir toplu iş olarak içe aktarılır.Bu durumda, tamamlanmadan önce alma işlemi başarısız olursa, tüm işlem geri alınır ve hiçbir veri hedefe eklenir tablo.Başarısız olan işlemi sonra veri dosyasının başında yeniden başlatılması gerekir.

Tek bir toplu iş iş sorunlu, olabildiği kadar büyük veri dosyasını almak için bcp ve bulk INSERT, her biri veri dosyasını küçük bir dizi toplu iş iş işlemleri, veri içe.Her toplu iş iş alınacak ve ayrı bir işlemde oturum açmış ve belirli bir hareket kararlıdır sonra bu hareketi tarafından alınan satırların edilendir.İşlem başarısız olursa, yalnızca geçerli toplu işleminden alınan satırları geri alınır ve veri dosyasının başında yerine başarısız toplu iş başında başlayan veri almayı sürdürebilirsiniz.

Not

Toplu işlemleri nasıl çalıştığını hakkında daha fazla bilgi için bkz: Toplu işlemleri.

Alternatif olarak, toplu iş boyutunu sınırlamak isterseniz, komutu, veri dosyasının boyutunu tahmin etme tarafından performansı artırabilir.Sizin tahmin sorgu işlemcisi tarafından operasyon için sorgu planı oluşturulurken kullanılır.

Not

Toplu iş boyutu veya veri dosyası boyutu belirttiğiniz zaman doğruluk kritik değildir.

Aşağıdaki tablo bu seçenekleri desteği niteleyicileri özetler.

Komutu

Toplu iş boyutu

Gönderilen toplu iş satır

Toplu iş gönderilen kilobayt

BCP1

-bbatch_size

-h "ROWS_PER_BATCH = bb"

-h "KILOBYTES_PER_BATCH cc ="

bulk INSERT2

BATCHSIZE = batch_size

ROWS_PER_BATCH = rows_per_batch

KILOBYTES_PER_BATCH = kilobytes_per_batch

NotNot
BATCHSIZE ile bu seçeneği kullanarak bir hata üretir.

EKLE...SEÇİN * OPENROWSET(BULK...) DAN

—3

ROWS_PER_BATCH = rows_per_batch

—3

1 In a bcp command, do not use the -bbatch_size switch and the ROWS_PER_BATCH or KILOBYTES_PER_BATCH hint together.Bu nedenlerden bir hata birleştirme.

2 De bir bulk INSERT komutunu BATCHSIZE rows_per_batch veya KILOBYTES_PER_BATCH ile kullanırsanız, BATCHSIZE önceliklidir.

3 openrowset BATCHSIZE ne KILOBYTES_PER_BATCH ne de seçeneklerine sahiptir.

Aşağıdaki bölümlerde bu niteleyicileri kullanımını açıklar.

Yaklaşık toplu iş boyutu belirtme

Çok sayýda satýr içe aktarıyorsanız, toplu işlemleri veri bölme avantajlar sunabilir.Her toplu iş iş sonra tam, hareket günlüğe kaydedilir.Herhangi bir nedenle bir toplu iş iş alma işlemi tamamlanmadan önce sona erer, yalnızca geçerli işlem (toplu iş iş) geri alınır.

Not

Toplu günlük hareket günlüğüne alınan verilerin bir kopyasını içerir.Bu günlük hızla büyümesine neden olabilir, ancak her toplu iş iş sonra yapabilirsiniz yedeklemek günlük alanının tümünü geri kazanmak için günlük.

Bir dizi boyuttaki yaklaşık bir belirtilen veri dosyasını almak için aşağıdaki niteleyici kullanın:

  • For bcp: -b

  • bulk INSERT için: BATCHSIZE

Her toplu iş iş satır ayrı bir işlem olarak eklenir.Herhangi bir nedenle toplu alma işlemi tamamlanmadan önce sona erer, yalnızca geçerli işlem geri alınır.For instance, if a data file has 1000 rows, and a batch size of 100 is used, Microsoft SQL Server logs the operation as 10 separate transactions; each transaction inserts 100 rows into the destination table.Toplu alma işlemi sırasında yüklenmesini satır 750 sona ererse, yalnızca önceki 49 satırları olarak kaldırılan SQL Server geri alır Geçerli hareket.Hedef Tablo hala ilk 700 satırları içerir.

SQL Server Yük değerine göre daha iyi performansa neden olabilir, toplu iş boyutu, otomatik olarak, en iyileştirir.Genel olarak, toplu iş boyutu kadar büyük pratik yapmanız gerekir.Genellikle, büyük toplu iş boyutu, toplu alma işleminin performansı daha iyi.Birkaç istisna, ancak mevcut.Hedef Tablo üzerinde bir veya daha fazla dizin mevcut, daha büyük bir toplu iş boyutu sıralama bellek baskısı koymak.Ayrıca, tablock seçeneği kullanmadan gerçekleştirilen paralel bir yükleme sırasında daha büyük bir toplu iş boyutu daha fazla engellenmesi için yol açabilir.

Not

Toplu işlem boyutları olmayan ilgili verileri dışa toplu tıklattığınızda bir örnek , SQL Server için bir veri dosyası.

Bir veri dosyası yaklaşık boyutu belirtme

Toplu alma işlemi için bir toplu iş boyutu belirtmezseniz, etkin sorgu planı içinde kaynak tahsis etmek sorgu işlemci izin vermek için veri dosyası yaklaşık boyutu belirtebilirsiniz.Veri dosyası yaklaşık boyutu belirtmek için ya da satır sayısını veya veri kilobayt sayısı gibi tahmin:

  • toplu iş iş İş başına satır tahmin ediliyor

    Satır sayısını tahmin etmek için ipucu rows_per_batch veya seçeneğini kullanın.Bir değer belirtirseniz, > 0, sorgu işlemci kullanan sorgu planı. kaynaklar tahsis etmek için bir ipucu olarak rows_per_batch değeriBu değer, gerçek satır sayısı aynı sırada olmalıdır.

    Veri dosyasındaki tüm satırlar halinde kopyalanır, ancak bir örnek , SQL Server bir toplu iş iş bcp iletisini görüntüler "gönderilen 1000 satırları SQL Server"" Her 1000 satırlardan sonra.Bu ileti bilgilendirme amaçlıdır ve toplu iş boyutu ne olursa olsun oluşur.

  • toplu iş iş İş başına kilobayt tahmin ediliyor

    To estimate the size of the data file in kilobytes, use the KILOBYTES_PER_BATCH hint or option.SQL Server optimizes the bulk-import operation according to the specified value.

Not

Toplu iş boyutu veya herhangi bir günlüğü en az iyileştirmeleri belirtmeden topluca bir büyük veri dosyasını içe aktardığınızda, toplu alma işlemini tamamlamadan önce işlem günlüğü doldurmak.Bu durumu önlemek için işlem günlüğü büyütmek veya otomatik olarak büyümesine izin verin.