SSIS - Zip Task
Özellikle bankalara hizmet eden bir kuruluştaysanız bu gibi senaryol ile karşılaşmanız olası. Gönderilecek excel bulk veri setinden oluşuyor. Fakat o seti siz kendi sisteminize bağlandırıp gönderemiyorsunuz. Onların sistemine bağlanamıyorsunuz tek çıkar yol Excel. Reporting Service ise Excel dosyasını sıkıştırarak gönderemediği için boyut büyüklüğünden sıkıntı çıkıyor.
Bu gibi senaryolarda her ne kadar SSIS raporlama çözümü olmasa dahi kullanılabilir. Dosya sıkıştırma işlemi üçüncü parti kontroller ile bu işlemi yapmak çok daha basit bir hale geliyor. Bu yazımızda ilk önce hazır gelen kontrol ile sonrasında da bizim daha önceden de belirtmiş olduğumuz alternatif çözüm ile geliştirmemizi yapalım.
Execute Process Task kontrolü ile hazırlamış olduğumuz paketlerin herhangi bir anında ihtiyaç duyacağımız *.exe, *.com, *.bat, *.cmd uzantılı dosyaları çalıştırabiliriz.
İlk önce Data Flow Task kullanarak sorgumu kaynaktan (source) çeker ve hedefe (destination) yazdırırız daha sonrasında Data Flow ile işim bittiğinde de Send Mail Task ile ilgili dosyayı seçerek belirttiğim kişilere mail göndererek işlemimiz biter. Bu şekilde paketi tasarlayıp çalıştırdığımda her şey sorunsuz işliyordu. Fakat maili alacak kişi ile iletişime geçtiğimde kendisine herhangi bir dosya gelmediğini belirtiyordu.
Sebebini araştırdığımda gönderilen dosyanın büyüklüğünden ötürü mail gönderirkten güvenliğe takıldığını tespit ettik. Dolayısıyla bu dosyayı sıkıştırarak göndermemiz gerekti. Bunun için WinZip’i araştırarak küçük bir cmd dosyası hazırladım. Gönderilen dosya ismi her zaman aynı olduğu için bu konuda bir problem ile karşılaşmadım.
Yukarıda belirtmiş olduğum cmd dosyasının içeriğine bakacak olursak…

@echo off
wzzip – Sıkıştırılan Dosya Yolu – – Kaynak Yolu -
Daha sonrasında bu cmd dosyasını tetikletmek için SSIS paketimin içine Data Flow ile Send Mail kontrolünün arasında Execute Process Task ekledim ve ilgili cmd dosyasını seçtim.
Bu sayede excel dosyam oluşturulduktan sonra cmd dosyası devreye giriyor ve dosyayı zip ile sıkıştırdıktan sonra mail gönderiyordu.
Sıkıştırma seviyesini dahi geliştiricinin belirlemiş olduğu Zip Task kontrolünü kullanmak tıpkı bir SMTP kontrolünü kullanmak gibi son derece kolaydır. Kaynak dosyanızı belirttikten sonra tanımlayacağınız birkaç özellik ile kontrolünüz hazır hale gelecektir.
Bu yol size fazla dönemeçli gelmiş olabilir. Alternatif yollarımız nelerdir?
CozyRoc gibi 3. parti ssis bileşeni geliştiren firmaların genellikle dosya sıkıştırma ile ilgili çözümleri var. (zip dışında yer alan formatları da destekliyorlar) Onu kullanabilirsiniz.
Veya yazılım geçmişine sahipseniz SSIS Script Task yardımıyla sorununuzu çözebilir hatta bunun bir adım ötesine geçerek Custom Component geliştirirerek kendi bileşeninizi SSIS projelerinde kullanabilirsiniz.