SSIS’ de Transaction Kullanımı

Integration Services kullanarak bir çok mission critical sisteme veri aktarıyorsunuz yada başka işlemler yapıyorsunuzdur. Control Flow boyunca bir çok paket bir çok executable peşi sıra çalışıyordur. Diyelim ki düzenli olarak veri aktardığınız bir veri ambarı var. Verilerinizi aktarırken bir kısmını update ettiğinizi düşünün ve belirli bir noktadan sonra paket hata verdi! Yaptığınız değişiklikleri geri alabilir misiniz? Raporlarda görünecek sonuçlara etkimiş durumdasınız. Büyük bir kriz olacabilecek bir durum. Bu tip kritik gördüğünüz executable’ lar (Paketler, Containerlar, Tasklar) için Transaction tanımlayarak gerçekleştirdiğiniz işlemleri roll-back edebiliyorsunuz.

SQL Server Data Tools kullanarak oluşturduğum örnek veri aktarım paketi aşağıdaki gibidir. Öncelikle bir kısım veriyi başarılı bir şekilde aktardıktan sonra Transaction tanımlayacağız ve davranışını gözlemlememiz daha kolay olacak.

İlk etapta veri aktaracağım DimCustomer ve FactInternetSales tablolarım boş durumda.
Tables

 

 

 

 

 

 

 

 

 

 

 

 

 

Load Customer ve Load Internet Sales data flowları ile veri ambarına verileri aktarıyorum.

Load

 

 

 

 

 

 

Daha sonra Staging tarafında veriler üzerinde değişiklikler yapıyorum ve yeni bir aktarım gerçekleştiriyorum. Fakat yaptığım değişikler sonucu hata alıyorum.
Error
Tablolardaki verileri silerek süreci baştan alıyorum ve bu akış boyunca her hangi bir hata olursa bütün süreci roll-back etmek için Transaction tanımlayacağız. Bunun için Sequence Container’ ın property’ lerine giderek; IsolationLevel ve TransactionOption propertylerini set etmeliyiz. Isolation Level default olarak Serializable geliyor. Listede SQL Server’ dan bildiğimiz transaction seçeneklerini göreceksiniz. Serializable olarak bırakıyoruz. TransactionOptionlarda üç farklı seçeneğiniz var.

Not Supported: Eğer tanımlanmış bir transaction varsa ona dahil eder.
Supported: Eğer tanımlanmış bir transaction varsa bu executable’ o ona dahil eder.
Required: Eğer tanımlanmış bir transaction varsa ona dahil eder yoksa kendisi bir transaction tanımlar.
Burada bir transaction başlatmak için Required seçeneğini seçiyoruz.
Transaction
Transaction tanımladık şimdi paketi çalıştırıyoruz.
Error Transaction

 

 

 

 

 

 

 

Yine hata aldık fakat bu sefer tablolar boş durumda. Tanımladığımız transaction ile birlikte aktarılan kayıtlar roll-back edildi.
Table Final

 

 

 

 

 

 

 

 

 

 

 

 

 

Paket seviyesinde transaction tanımlayarak paket boyunca yaptığınız her işlemi roll-back edebilirsiniz. Bunun için Control Flow üzerinde herhangi boş bir alana tıkladıktan sonra F4‘ e basmanız yeterli. Ondan sonra yine IsolationLevel ve TransactionOption property’ lerini set etmelisiniz.

Reklamlar
Bu yazı SSIS içinde yayınlandı ve , , , olarak etiketlendi. Kalıcı bağlantıyı yer imlerinize ekleyin.

3 Responses to SSIS’ de Transaction Kullanımı

  1. Geri bildirim: SSIS’de transaction kullanımı | Veri Yönetimi Departmanından Haberler

  2. analyzerhakan dedi ki:

    Reblogged this on analyzerhakan and commented:
    Bence çok faydalı bir kısa makale

  3. Geri bildirim: SSIS’ de Checkpoint Kullanımı | Business Intelligence Tips

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s