Beberapa waktu yang lalu saya melakukan kesalahan besar dengan project SSIS yang saya kerjakan. Yang sedianya saya pikir merupakan Best Practice SSIS berubah menjadi worst practice.
Menggunakan SQL Server Destination
Waktu baca di Books Online kalau SQL Server Destination jauh lebih cepat dibandingkan OLE DB Destination, saya dah gatel pengen pake. Soalnya di project-project sebelumnya saya gak pernah dapet kesempatan menggunakan SQL Server Destination karena destination nya bukan SQL Server.
Ternyata, memang kenceng kalau yang dieksekusi hanya satu package saja. Tapi begitu dah 200-an package yang jalan, bukannya kenceng malah error timeout yang saya dapat. Dan sialnya, behavior error-nya tuh gak pernah sama. Kadang Package A yang fail, kadang package B yang fail, dan seterusnya.
Akhirnya ke-200-an package itu harus di-rewrite dan SQL Server Destination pun diganti dengan OLE DB Destination. Untungnya dengan sedikit bantuan dari SQL Server SDK hal ini dapat dengan cepat diperbaiki, walaupun menimblkan beberapa masalah kecil yang nggak worst. Heuheuheu.
Menyimpan Connection String di Environment Variable
Tadinya saya pikir ini ide yang bagus, karena saya punya dua server. Yang pertama server development dan satunya production. Tapi ternyata, untuk connection string yang didalamnya terdapat informasi sensitive (baca:password) si informasi nya gak bisa dibaca oleh si package. Untuk yang satu ini, saya harus menggantinya dengan cara menyimpan di SQL Server.
Menggunakan Checkpoint
Checkpoint adalah hal yang sangat membantu apabila terdapat error di dalam package yang kita kerjakan. Di dalam checkpoint semua konfigurasi dan variable yang terdapat di dalam package disimpan. Di dalam project saya yang lalu, data yang diambil berdasarkan tanggal yang nilainya disimpan di dalam sebuah variable. Sialnya, package yang dieksekusi dari job harian itu fail di hari libur dan pada saat hari kerja ketika datanya di-cek ternyata masih berisi data hari libur.
Untuk menghindari hal ini, nama file checkpoint harus dibuat dynamic dengan format CheckPoint_yyyy-mm-dd.xml.
Waduh, semoga list wost practice ini gak bertambah lagi yah. Tapi sering-sering cek post ini kalo ternyata saya melakukan worst practice lainnya.
Supaya kejadian ini gak terjadi lagi, ada beberapa referensi best practice yang saya temukan dan saya coba implementasikan dalam project, diantaranya:
SSIS Best Practices - Performance
SSIS: Suggested Best Practices and naming conventions
Top 10 SQL Server Integration Services Best Practices