Mode Akses Data Komponen Tujuan OLE DB hadir dalam dua rasa - cepat dan tidak cepat.
Cepat, "tabel atau tampilan - pemuatan cepat" atau "tabel atau variabel nama tampilan - pemuatan cepat" berarti bahwa data akan dimuat dengan mode berbasis-set.
Lambat - "tabel atau tampilan" atau "tabel atau variabel nama tampilan" akan menghasilkan SSIS yang mengeluarkan pernyataan menyisipkan tunggal ke database. Jika Anda memuat 10, 100, bahkan mungkin 10.000 baris, mungkin ada sedikit perbedaan kinerja yang cukup besar antara kedua metode. Namun, pada titik tertentu Anda akan menjenuhkan contoh SQL Server Anda dengan semua permintaan kecil piddly ini. Selain itu, Anda akan menyalahgunakan daftar transaksi Anda.
Mengapa Anda menginginkan metode yang tidak cepat? Data buruk. Jika saya mengirim 10.000 baris data dan baris ke-9999 bertanggal 2015-02-29, Anda akan mendapatkan 10k entri atom dan komit / kembalikan. Jika saya menggunakan metode Cepat, seluruh kumpulan 10k baris itu akan disimpan atau tidak ada. Dan jika Anda ingin tahu baris mana yang salah, tingkat granularitas terendah yang Anda miliki adalah baris 10rb.
Sekarang, ada pendekatan untuk mendapatkan sebanyak mungkin data dimuat secepat mungkin dan masih menangani data kotor. Ini adalah pendekatan kegagalan berjenjang dan terlihat seperti itu
Idenya adalah Anda menemukan ukuran yang tepat untuk memasukkan sebanyak mungkin dalam satu kesempatan tetapi jika Anda mendapatkan data yang buruk, Anda akan mencoba menyimpan kembali data dalam batch yang lebih kecil secara berturut-turut untuk mendapatkan baris yang buruk. Di sini saya mulai dengan ukuran komit masukkan maksimum (FastLoadMaxInsertCommit) dari 10000. Pada disposisi Baris Kesalahan, saya mengubahnya Redirect Row
dari Fail Component
.
Tujuan berikutnya sama seperti di atas tetapi di sini saya mencoba memuat cepat dan menyimpannya dalam batch 100 baris. Sekali lagi, uji atau buat kepura-puraan untuk membuat ukuran yang masuk akal. Ini akan menghasilkan 100 kumpulan 100 baris yang dikirim karena kita tahu di suatu tempat di sana, setidaknya ada satu baris yang melanggar batasan integritas untuk tabel.
Saya kemudian menambahkan komponen ketiga ke dalam campuran, kali ini saya menghemat dalam batch 1. Atau Anda bisa mengubah mode akses tabel dari versi Fast Load karena akan menghasilkan hasil yang sama. Kami akan menyimpan setiap baris secara individual dan itu akan memungkinkan kami untuk melakukan "sesuatu" dengan satu baris buruk.
Akhirnya, saya memiliki tujuan yang gagal. Mungkin itu tabel "sama" dengan tujuan yang dituju tetapi semua kolom dinyatakan sebagai nvarchar(4000) NULL
. Apa pun yang berakhir di meja itu perlu diteliti dan dibersihkan / dibuang atau apa pun proses resolusi data Anda yang buruk. Lainnya membuang ke file datar tapi sungguh, apa pun yang masuk akal untuk bagaimana Anda ingin melacak data yang buruk berfungsi.