Merhabalar
Bu yazımda sizlere SSIS ile bir günlük job oluşturup bunu nasıl uygulamaya koyacağınızı anlatmaya çalışacağım.
Öncelikle bir job oluşturmak için config dosyası oluşturmamız gerekiyor. Bunun için ana paket olarak seçeceğimiz paketi açalım. Üst kısımdaki SSIS sekmesinden 'Package Configuration' kısmını açıyoruz.
(Eğer 'Enable package Configurations' kısmı seçili değilse yeni bir config dosyası eklemek için o kısmı açmamız gerekiyor) Daha Sonra 'Add' tuşuna basarak Package Configuration Wizard'ı açıyor ve XML Configutarion Kısmını seçiyoruz.
Browse kısmına tıklayarak bin klasoru altına .dtsConfig uzantılı config dosyamızı oluşturuyoruz.
Oluşturulan config dosyamız ekrana geldikten sonra Package Configuration Wizard ekrana geliyor, buradan da config dosyamıza koyacağımız parametreleri seçiyoruz. İşi daha basit tutmak için projemizde daha önceden oluşturmuş olduğumuz bağlantıları config dosyasına tanımlamamız yeterli olacaktır. Bunun için ana projemisin altında Connection Managers altından hem ETL aktarımda kaynak olarak belirtilen datasource'u hem de dwh projemizde yazacağımız data source'u buluyoruz. Bu data source'un altında sırasıyla /Properties/ConnectionString sekmesini seçiyoruz.
Bu işlemi her iki datasource için de yaptıktan sonra Next tuşuna basarak ilerliyoruz. Configuration için bir isim vererek config dosyamızı yaratmayı tamamlıyoruz. Buradaki amaç connection stringleri belirleyerek bunları her pakette standard kullanıma oturtacak bir yapı hazırlamak.
Ana paketimizde config dosyamızı yarattıktan sonra ajna paketin içinde bulunan tüm paketlerde de aynı config dosyasını kullanacağımız aşamaya geçiyoruz.
Ana paketimizin altında bulunan her bir paket için en başta yaptığımız gibi sırasıyla SSIS tabına - Package Configuration'a ve Add'e tıklayıp XML configuration file seçip Browse'yi tıklıyoruz. Daha önceden bir config dosyası oluşturduğumuzdan projemizin klasorlerinden bin ile aynı yerde bulunan config dosyasını seçiyoruz ve Save tuşuna tıklıyoruz. İlgili config dosyasını seçip Next tuşuna tıkladığımızda bir ekran bize böyle bir config dosyası olduğundan bununla ilgili var olanı mı kullanmamız gerektiği yoksa üzerine yazıp değişiklik mi yapmak istediğimizi soruyor. Bir job oluşturduğumuzda esas amaç ortak bir config dosyası kullanmak olduğundan Reuse Existing tuşuna basıyoruz. Daha sonra gene bir isim vererek işlemimizi tamamlıyoruz.
Projemizde bulunan ve Ana paketimiz tarafından çağrılan her bir paket için bu işlemi tekrarlıyoruz.
Config dosyasını tüm paketlerimize uyguladıktan sonra database'de Integration Services'in altında yapacağımız işlemler kalıyor. Öncelikle Visual Studio üzerinde projemize sağ tıklayarak build etmemiz gerekiyor. Ancak burada üzerinde durulması gereken bir nokta var. Projemiz üzerinde sağ tıklayıp properties seçip çıkan ekranda Deployment Utility kısmına geldiğimizde CreateDeploymentUtility kısmının true olması gerekiyor.
Default olarak bu kısım false gelir. Bunu true yaparsak bize XML formatında bin altında Deployment klasorune bir deployment dosyası oluşturacaktır.
Build işlemi başarıyla tamamlandıktan sonra, projemizin hard disk'te ilgili kısmına girip /bin/deployment klasörüne giriyoruz. Bu Klasörün içinde paketlerimiz yanı sıra yarattığımız config dosyasının bir de Integration Services Deployment Manifest tipinde bir dosyanın oluştuğunu görebiliriz. Bu manifest dosyasını çalıştıracağız. Bunun üzerinde direk çift tıklayabileceğimiz gibi sağ tuş 'open with' seçip 'SQL Server Integration Services Package Installation Utility' seçerek de çalıştırabiliriz. Gelen ekranda SQL Server Deployment ve Validate Packages After Installation kısmını seçiyoruz.
Next diyerek devam ediyor, ve server adını seçtikten sonra aşağıda Package path kısmında SSIS packages altındaki Data Collector'u ve Rely on server storage for encryption seçiyoruz ve Next diyoruz. Default olarak gelen installation folder'ı değiştirmeden next diyoruz. Daha sonra confirm installation kısmını da geçerek paketlerimizi yüklemesini bekliyoruz. Ardından daha sonra yarattığımız config dosyasını seçiyoruz ve next diyerek deployment işleminin tamamlanmasını beliyoruz. Bu işlem projenini büyüklüğü ile doğru orantılı olarak uzun sürebilir. Kapaca processe göz atıp hatasız olduğunu görüp next diyor, hata varsa onu düzeltmek üzere solutionumuza geri dönüyoruz. Bize yapılan işlerin bir özeti çıkan son ekranda finish diyerek çıkıyoruz.
Şimdi SQL Server Management Studio açarak Object browserden Connect/Integration Services tıklıyoruz. Server'a başlandığımızda karşımıa 2 klasor çıkıyor. Bunlardan biri Running Packages, diğeri ise Stored Packages. Running packages ne işe yarar az sonra anlatacağım. Ama önce Stored Packages altında MSDB klasörünü açıyoruz. Burada Data Collector ve Maintenance Placs die iki klasor var. Hatırlarsanız biz projemizi Data Collector altına deploy etmiştik.
Birden fazla job çalıştırılacaksa tavsiye edilen bu joblari için klasör açmaktır. Bunun için MSDB üzerine sağ tıklayıp new Folder diyoruz. İsim vererek dosyamızı oluşturuyoruz. Bu dosyamızın üzerine sağ tıklayarak import package'ı seçiyoruz. Buradaki amaç Data collector altında yer alan tüm paketlerden sadece ana paketimiz i alıp diğerlerinden ayırmak. Çünkü tüm ETL akışımızı çalıştırmak amacında olduğumuzdan yanlızca ana paketimiz üzerinden job çalıştıracağız. Eğer ara paketler ayrıca çalıştırılacaksa onların da ayrı klasorler içine import edilmesi düzen açısından faydalı olacaktır.
Import package kısmına geri gelecek olursak, Import Package kısmında aşağıdaki ayarları yapıyoruz.
Burada server'ım HISBI olduğundan onu seçip, Data Collection altında ana paketim olan his'i seçtim. Sizde bunlara karşılık kendi alanlarınızı seçebilirsiniz.
Paketimizi oluşturduktan sonra, sıra geldi müstakbel job paketimizi deneme amaçlı çalıştırmaya.
Bunun için klasor içindeki paketimizi sağ tıklayıp Run Package'ı seçiyoruz ve aşağıdaki ekran karşımıza geliyor.
Burada configurations tabına tıklayıp Add diyerek yarattığımız config dosyasını tanımlıyoruz, Reporting tabında Console loging kısmında Source Name ve Message seçip, Console Event kısmıı Verbose seçili bırakıyoruz. Son olarak set values Kısmında Property Path kısmına '\Package.Properties[DisableEventHandlers]' yazıp, value kısmına True yazıyoruz ve execute kısmına basıyoruz. Bu işlem ana paket altındaki herşeyi çalıştıracağından proje büyüklüğüne göre uzun sürecektir. Ana paketin hangi aşamada olduğu Integration Services Server'ı altındaki Running packages kısmından gözlemlenebilir.
İşlemimiz hata verirse solution kısmına gidip düzeltip build edip diğer işlemleri tekrarlayarak yeniden bu aşamaya gelmemiz gerekiyor.
İşlemi sorunsuz tamamladıysak artık job için schedule ayarlama kısmına geçebiliriz.
Bunun için kısa bir ön hazırlık yapmamız gerekecek. Normal dwh databaseimize bağlanıp Security altında Credentials kısmından bir credential ayarlıyacağız. Bunun için sağ tıklayıp new credential dedikten sonra kullanıcımızı seçip şifresini giirip bir credential yaratıyoruz. Daha sonra SQL Server Agent altında SSIS Package Execution altına New Proxy diyoruz. Bir proxy ismi verip Credential name kısmına daha önce yarattığımız credentialı veriyor, Active to following subsystems kısmından SQL Server Integration Services Package'ı seçiyoruz.
Şimdi Job yaratmak için hazırız. SQL Server Agent altında, Jobs klasoru altına new Job diyoruz. Gelen ekranda Job'umuza bir isim veriyoruz. Daha sonra Step sekmesine gelip aşağıdaki ayarları yapıyoruz.
Run as kısmına az önce yarattığımız proxy'yi seçiyorz. Package kısmına da oluşturduğumuz klasor altındaki ana paketimizi veriyoruz. Daha sonra daha önce yaptığımız gibi configuration sekmesinden config dosyasını, set values kısmına da yukarıda bahsedilen ayarı yapıyoruz ve OK tuşuna basıyoruz.
Böylelikle job'umuz hazır. Schedules kısmından ne zaman çalışacağını, Alets ve Notifications kısmından da gerekli ayarlamaları opsiyonel olarak yapabilir.
Herhangi bir sorunuz olursa blogdan bana ulaşabilirsiniz..






Hiç yorum yok:
Yorum Gönder