OLE DB Hedef Bileşeninin Veri Erişim Modları hızlı ve hızlı olmayan iki çeşide sahiptir.
Hızlı, "tablo veya görünüm - hızlı yükleme" veya "tablo veya görünüm adı değişkeni - hızlı yükleme", verilerin küme tabanlı bir şekilde yükleneceği anlamına gelir.
Yavaş - "tablo veya görünüm" veya "tablo veya görünüm adı değişkeni", SSIS'in veritabanına tekli ekleme ifadeleri vermesine neden olur. 10, 100, hatta 10000 satır yüklüyorsanız, muhtemelen iki yöntem arasında kayda değer bir performans farkı vardır. Ancak, bir noktada SQL Server örneğinizi tüm bu küçük isteklerle doyuracaksınız. Ayrıca, işlem günlüğünüzdeki halkı kötüye kullanacaksınız.
Neden hızlı olmayan yöntemleri istesin ki? Hatalı veri. 10000 satır veri gönderdiysem ve 9999. satır 2015-02-29 tarihine sahip olsaydı, 10 bin atom eki ve komisyon / geri alma olur. Fast yöntemini kullanıyordum, 10k satırlık tüm toplu iş ya kaydedilecek ya da hiçbiri kaydedilmeyecek. Ve hangi satır (lar) ın ortaya çıktığını bilmek istiyorsanız, sahip olacağınız en düşük ayrıntı düzeyi 10 bin satırdır.
Şimdi, mümkün olduğunca hızlı veri yüklenmesine ve kirli verilerin işlenmesine yönelik yaklaşımlar var. Bu bir var basamaklı başarısızlık yaklaşımı ve şöyle görünür
Fikir, tek çekimde mümkün olduğunca eklemek için doğru boyutu bulmanızdır, ancak kötü veri alırsanız, kötü satırlara ulaşmak için verileri art arda daha küçük gruplar halinde kaydetmeyi deneyeceksiniz. İşte Hata Satır eğilim üzerinde 10000 boyutu (FastLoadMaxInsertCommit) işlemek insert bir Maksimum ile başladı, ben bunu değiştirmek Redirect Row
dan Fail Component
.
Bir sonraki hedef yukarıdakiyle aynıdır, ancak burada hızlı bir yük dener ve 100 satırlık gruplar halinde kaydederim. Yine, makul bir boyutla gelmeyi test edin veya biraz iddia edin. Bu , orada bir yerde bildiğimiz için 100 satırlık 100 satırlık grupla sonuçlanacaktır , tablonun bütünlük kısıtlamalarını ihlal eden en az bir satır vardır.
Daha sonra karışıma üçüncü bir bileşen ekliyorum, bu sefer 1'lik gruplar halinde kaydediyorum. Her satırı ayrı ayrı kaydedeceğiz ve bu, tek kötü satır (lar) ile "bir şeyler" yapmamızı sağlayacaktır.
Sonunda, güvenli bir varış yerim var. Belki de amaçlanan hedefle "aynı" tablodur, ancak tüm sütunlar olarak bildirilir nvarchar(4000) NULL
. Bu tablodaki sonuç ne olursa olsun araştırılmalı ve temizlenmeli / atılmalı veya kötü veri çözümleme süreciniz ne olursa olsun. Diğerleri düz bir dosyaya dökülür, ancak gerçekten, kötü veri çalışmalarını nasıl izlemek istediğiniz için ne mantıklı olursa olsun.