Aracılığıyla paylaş


Toplu işlemleri için Bulk ımport yönetme

Bu bölüm, toplu iş boyutu için bir toplu alma işleminin nasıl belirlenir yönetme anlatılır.Varsayılan olarak, bir Veri dosyasındaki tüm satır, bilinmeyen boyutunda tek bir işlemle tek bir toplu iş olarak alınır.Bu durumda, alma işlemini tamamlanmadan önce başarısız olursa, tüm işlem geri alınır ve veri, hedef tabloya eklenir.Başarısız olan işlem sonra veri dosyasının başında yeniden başlatılması gerekir.

Tek bir toplu iş, sorunlu gibi büyük bir veri dosyası alma için Kullanımıbcp ve BULK INSERT her biri, veri dosyasını küçük olan bir dizi toplu işlem, veri almayı sağlar.Her toplu iş iş iş alınmış ve ayrı bir işlemde oturum ve belirli bir hareketin amaç edinmiştir sonra bu işlem tarafından alınan satır kabul edilendir.Işlem başarısız olursa, yalnızca satır geçerli toplu işlemden alınan geri alınır ve veri dosyasının başına yerine, başarısız bir toplu iş başında başlatma veri alma kaldığınız yerden devam edebilirsiniz.

Not

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

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

Not

Toplu iş boyutu veya veri dosyasının boyutunu belirttiğinizde, doğruluk kritik değildir.

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

Komutu

Toplu iş boyutu

toplu iş iş iş gönderilen satırları

toplu iş iş iş gönderilen kilobayt

Kullanımıbcp1

-bbatch_size

-h "rows_per_batch = bb"

-h "kilobytes_per_batch = cc"

TOPLU EKLEME2

batchsize = batch_size

rows_per_batch = rows_per_batch

kilobytes_per_batch = kilobytes_per_batch

NoteNote:
Bu seçenek ile BATCHSIZE kullanılarak, bir hata üretir.

EKLE...SEÇİN * openrowset(bulk...) GELEN

—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 nedenler hata birleştirme.

2 BATCHSIZE ROWS_PER_BATCH veya KILOBYTES_PER_BATCH, kullandığınız BULK INSERT bir komutta BATCHSIZE önceliklidir.

3 OPENROWSET BATCHSIZE kendisi KILOBYTES_PER_BATCH seçenekleri vardır.

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

Approximate toplu iş boyutunu belirleme

Verileri toplu bölme, çok sayıda satır alıyorsanız, avantajları sunabilirsiniz.Tam her toplu iş iş sonra hareketi bir günlüğe kaydedilir.Herhangi bir nedenle toplu iş iş alma işlemi tamamlanmadan önce sona erdirir, yalnızca geçerli hareket (toplu iş iş iş) geri döndürülüyor.

Not

Toplu günlük, hareket günlüğüne alınan verilerin bir kopyasını içerir.Bu günlük, hızlı ulaşması neden olabilir, ancak her toplu iş iş sonra günlük alanı geri kazanmak için günlük yedekleyebilirsiniz.

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

  • Için Kullanımıbcp: -b

  • Için BULK INSERT: BATCHSIZE

toplu iş iş iş her satır ayrı bir hareket olarak eklenir.Herhangi bir nedenle, toplu alma işlemini tamamlanmadan önce sona erdirir, yalnızca geçerli işlem geri döndürülüyor.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 Satır 750 yüklenirken sona ererse, yalnızca önceki 49 satırları olarak kaldırılır SQL Server Geçerli hareketin'ne geri alır. Hedef Tablo hala ilk 700 satırları içerir.

SQL Server Yük, değerine göre daha iyi bir performans neden olabilir, toplu iş boyutu, otomatik olarak eniyileştirir.Genel olarak, toplu iş boyutu büyük pratik yapmanız.Genellikle, büyük toplu iş boyutunu, toplu alma işleminin daha iyi performans.Birkaç özel durum, ancak vardır.Sonra hedef tablo üzerinde bir veya daha çok dizin varsa, daha büyük bir toplu iş boyutu sıralama bellek baskısı sokabilirsiniz.Ayrıca, bir paralel yükleme sırasında TABLOCK seçeneği kullanmadan gerçekleştirilen daha büyük bir toplu iş boyutu daha fazla engelleme yol açabilir.

Not

Verileri verme örnek toplu, toplu iş boyutu geçerli değil SQL Server bir veri dosyası için.

Bir veri dosyası yaklaşık boyutu belirtme

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

  • Satır başına bir toplu iş için tahmin ediliyor

    Satır sayısını tahmin etmek için , ROWS_PER_BATCH ipucu ya da seçeneğini kullanın.Bir değer belirtirseniz > 0, query processor ROWS_PER_BATCH değerini bir ipucu sorgu planı içinde kaynak tahsis etmek için kullanır. Bu değer, gerçek satır sayısı aynı sırada olmalıdır.

    Veri dosyasındaki tüm satırlar örnek kopyalanır ancak SQL Server toplu iş iş işlemde Kullanımıbcp "gönderilen 1000 satır iletisi görüntüler. SQL Server"sonra her 1000 satırları. Bu ileti, yalnızca bilgi içindir ve toplu iş boyutu ne olursa olsun gerçekleşir.

  • Toplu iş başına kilobayt hesaplanıyor

    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, toplu iş boyutu veya bir en az oturum açma en iyi duruma getirmeleri belirtmeden bir büyük veri dosyasını aldığınızda, toplu alma işlemini tamamlanmadan önce hareket günlüğü doldurmak.Bu durumdan kaçınmak için , işlem günlüğü büyütmek veya otomatik olarak genişlemesine izin vermek.