Visual Studio içerisinde gelen araçlar sadece yazılım geliştiricileri için değil aynı zamanda veritabanı geliştiricileri için de büyük kolaylık sağlamakta. Bu araçlar sayesinde hem veritabanı projesi geliştirebilir hem SQL Server yeteneklerini genişletecek nesneleri üretmek için CLR alt yapısına uygun dller yazabilir hem de veritabanlarını yapı ve veri bazında karşılaştırıp senkronize edebilirsiniz.
Daha önceki yazılarımızda Visual Studio ile veritabanı geliştirme ve veritabanlarını yapısal olarak karşılaştırma konularına değinmiştik.
Bu konuyla ilişkili önceki yazılarımıza aşağıdaki linklerden bir göz atabilirsiniz:
Veritabanı Proje Geliştirme Çözümleri - Visual Studio Özellikleri
http://www.abdullahkise.com/2014/03/veritaban-proje-gelistirme-cozumleri.html
VS ile Veritabanları Arasında Yapısal Kıyaslama Yapma ve Değişiklikleri Geri Alma (Schema Comparison + Restore from Snapshot)
Biz bu yazımızda Visual Studio içerisinde gelen Data Comparison aracı ile veritabanlarını tablo seviyesinde veriler bazında nasıl karşılaştırabileceğimize ve değişiklikleri hedefe nasıl yansıtabileceğimize odaklanacağız.
Data Comparison aracı sayesinde mesela test ve production ortamlarınızı tablo seviyesinde kontrol edebilir, farklı satırları senkronize edebilirsiniz. Karşılaştırmanın yapılabilmesi için bir takım şartlar mevcut. Şartların sağlanmadığı nesneler karşılaştırma listesinde görünmez.
Bu şartlar şöyle:
- Karşılaştırılan tabloların/viewlerin adları, kolon adları ve tipleri aynı olmalı
- Karşılaştırma amaçlı kullanılmak üzere benzersizliği sağlayacak Key veya Index tanımlı olmalı
- Benzersizliği sağlayan Key ve Constraintler aynı olmalı (Primary Key, Unique Index, Unique Contraint)
- Unique ve Clustered Indexler aynı olmalı
Aracının kullanımı oldukça kolay. Adımlar şöyle:
- Kaynak ve hedef belirle
- Karşılaştırılacak Table ve Viewleri seç
- Seçilen nesneleri veri bazında karşılaştır
- Farklı kayıtları, sadece kaynakta olanlar, sadece hedefte olanlar ve her ikisinde olan (özdeş) kayıtları incele
- Tüm farklılıkları veya bir kısmını hedefe yansıt
- Dilerseniz sadece scripti alarak birden fazla hedefe uygulayabilirsiniz
Data Comparison aracının nasıl çalıştığını bir senaryo üzerinden inceleyelim.
Senaryo şöyle:
ChangeableDB isimli bir veritabanımız var ve içerisinde Products isimli bir tablo mevcut. Production ortam olan bu veritabanı için bir de ChangeableDB_PreProd isimde Preproduction ortam oluşturduk. preproduction ortamda bir takım testler yapmaktayız ve başarılı olduğunda production ortama uygulamaktayız. Testlerin başarılı olabilmesi için çalışmaya başlamadan önce productiondaki verilerin tablo seviyesinde veri bazında birebir preproduction ortamda da olmasını istiyoruz.
Data Comparison aracını kullanarak bu senaryo ile nasıl başa çıkabiliriz?
Farklı yöntemlerde uygulanabilir. Biz bu senaryo için Data Comparison aracını kullanmaya odaklandık.
ChangeableDB veritabanında veri bazında bir takım değiklikler yapıyorum. Yeni satırlar ekliyorum. Color kolonunda güncelleme yapıyorum ve mevcut bir satırı siliyorum. Şimdi Data Comparison aracını kullanarak karşılaştırmayı yapalım.
1-Kaynak ve hedef belirle
Visual Stuido içerisinde gelen Data Comparison aracını üst menuden Tools/SQL Server/New Data Comparison.. adımlarıya açabilirsiniz.
Sonra açılan pencereden kaynak ve hedef seçimini yapabilirsiniz. Kaynak olarak ChangeableDB hedef olarak da ChangeableDB_Preprod veritabanını seçiyorum.
Hemen altta karşılaştırma seçeneklerini işaretliyorum. Farklı kayıtlar, sadece kaynakta olanlar ve sadece hedefte olanlar gelsin istiyorum. Özdeş satırların gelmesini istemediğim için Identical Records seçeneğini işaretlemiyorum.
2-Karşılaştırılacak Table ve Viewleri seç
Next butonu ile bir sonraki adıma geçebilirsiniz. Sonraki adımda yukarıda bahsettiğimiz şartlara uyan Table ve Viewler listelenecektir. Bu listeden karşılaştırılmasını istediğiniz nesneleri seçebilirsiniz.
3-Seçilen nesneleri veri bazında karşılaştır
Finish butonuna bastığınızda karşılaştırma başlar ve sonuçlar karşılaştırma seçeneklerinize göre gruplanır.
4-Farklı kayıtları, sadece kaynakta olanlar, sadece hedefte olanlar ve her ikisinde olan (özdeş) kayıtları incele
Sonuçları incelediğimizde Different Records grubuna bakarak kaynaktaki 248 kaydın hedeften farklı olduğunu görebiliyoruz. İkonlara dikkat ederek incelediğinizde ilgili kaydın kaynaktaki ve hedefteki halini görebilirsiniz.
Sonuçlara bakmaya devam ettiğimizde Only in Soruce grubunda 2 satırın sadece kaynakta yer aldığını, Only in Target grubunda ise 1 satırın sadece hedefte yer aldığını görebilirsiniz.
5-Tüm farklılıkları veya bir kısmını hedefe yansıt. Dilerseniz sadece scripti alarak birden fazla hedefe uygulayabilirsiniz
Kayıtları inceledikten sonra hedefe yansıtılmasını istediklerinizi seçip üstten Update Target butonu basabilir hedefin güncellenmesini sağlayabilirsiniz. Dilerseniz Generate Script butonu ile güncelleme kodlarını görebilir, dilerseniz Script butonu ile güncelleme kodlarını dosya olarak kaydedebilirsiniz.
Senaryomuzda production ortamındaki tüm değişikliklerin preproduction ortama yansıtılmasını istediğimiz için Update Target butonua basıyorum.
Sonuçları kontrol ettiğinizde veritabanlarının senkronize olduğunu görebilirsiniz.
Data Comparison aracı Tablo seviyesinde veri bazlı karşılaştırma yapma konusunda büyük konfor sağlıyor. Bu konfordan faydalanmadan önce yukarıda bahsettiğimiz gereksinimleri gözden geçirmek ve sağlamak gerekir. Tabi ki her zamanki gibi önce test ortamında çalışılmalı ve istenen tepkiler elde edildiğinde canlı ortamlarda uygulanmalıdır.
İstediğiniz şey veri değil de yapının karşılaştırılması ise şu yazımıza bir göz atın:
VS ile Veritabanları Arasında Yapısal Kıyaslama Yapma ve Değişiklikleri Geri Alma (Schema Comparison + Restore from Snapshot)
Faydalı olması dileğiyle.