SSDT makale serimin 4. makalesinde veritabanı projesini SQL Server’da tanımlı bir veritabanı ile nasıl karşılaştırıp schema farklılıklarını bulabileceğimizi görüyor olacağız.
Bir önceki makalemde projede yaptığımız değişiklikleri nasıl publish edebileceğimizi görmüştük. Bu makalede ise publish’den önce veritabanları arasındaki farklılıkları nasıl karşılaştıracağımıza bakacağız.
Projeyi development ortamı, publish ettiğimiz yeri ise production ortamı olarak adlandırmıştık. Bu durumda developer’lar projede schema değişikliği yaparken aynı zamanda production ortamında da DBA’ler schema değişikliği yapmış olabilirler.
En nihayetinde publish esnasında 2 veritabanı arasında schema olarak farklılık oluşur. Dolayısıyla publish’ten önce bu değişikliklerin kontrol edilmesi ve conflict var ise çözümlenmesi gerekir.
SQL Server 2012’den önce schema compare işlemleri için Redgate, Idera gibi 3rd party tool’lar kullanılmaktaydı. Artık schema compare işlemini SQL Server 2012 ile ücretsiz olarak yapabiliriz.
Lafı fazla uzatmadan karşılaştırmayı nasıl yaptığımıza bakalım. Bunun için her 2 ortamda yani hem projede hem de SQL Server’da tanımlı veritabanında değişiklikler yapacağım ve daha sonra Schema Compare ile bu değişiklikleri nasıl bulacağımıza bakacağız.
İlk olarak bir önceki makalemde oluşturduğum tbl_SSDTSample isimli tabloma FaxNo isimli yeni bir kolon ekliyorum.

Daha sonra projemde bir değişiklik daha yapmak adına tbl_SSDTMPerson isimli yeni bir tablo oluşturuyorum. Yeni bir tablonun nasıl oluşturulacağını şu makalemden bakabilirsiniz.

Şimdi de production tarafı olarak varsaydığımız SQL Server’da tanımlı AdvenTureWorks veritabanında bulunan tbl_SSDTSample isimli tablodan NewTelephone isimli kolonu siliyorum.

Değişiklik ve eklemelerim tamam. Şimdi 2 veritabanı için Schema Compare yapacağım.
Bunun için projeye sağ tıklayıp Schema Compare yazısını tıklıyorum.

Gelen ekranda kaynak olarak projedeki veritabanını hedef olarakta SQL Server’da bulunan veritabanını seçiyorum ve Compare butonuna basıyorum.

Compare işlemi tamamlandığında karşıma 2 bölümden oluşan bir sonuç listesi çıkıyor.

Üst bölümde 2 veritabanı arasındaki farklı olan objeler listelenirken, alt bölümde seçili olan farklılığın detayı gözüküyor.
Örneğin ilk değişikliğe baktığımızda 2 veritabanında da tbl_SSDTSample isimli tablonun olduğunu ama bu 2 tablo arasında farklılık olduğunu görüyoruz. Farklılığın detayına 2. bölümde baktığımızda; FaxNo (projeye yeni eklediğimiz kolon) ve NewTelephone (SQL Server’daki AdventureWorks’ten sildiğimiz kolon) kolonlarının hedef veritabanında olmadığını görüyoruz.

Aynı şekilde değişikliğe sahip 2. objeye yani tbl_SSDTSample isimli objeye baktığımızda bu objenin kaynak veritabanında olduğunu ama hedef veritabanında olmadığını görüyoruz. Zaten Action kısmındaki “Add” ifadesi de bunu işaret eder durumda.

Üst tarafta bulunan butonlar sayesinde Schema Compare işleminin özelliklerini, gruplamasını, filtrelemesini yapabiliriz. Bunların çok detayına girmeyeceğim. Belki ilerde bu özelliklerin bazıları için ayrı bir makale yazarım.
Farklılıkları inceledikten sonra direk bu ekrandan farklılıkları eşitleyebiliriz. Bunun için üst tarafta bulunan Generate Script butonunu kullanarak değişikliklerin script’lerini oluşturabileceğimiz gibi Update butonunu kullanarak değişikliklerin direk eşitlenmesini sağlayabiliriz.

Update işleminden sonra 2 veritabanın birbirine eşitlendiğini tekrar Schema Compare yaparak kontrol edebiliriz.
Schema Compare özelliği SQL Server 2012’e ile bundle olarak gelen bir özellik. Daha önceki sürümlerde 3rd Party Tool’lar kullanarak yaptığımız schema karşılaştırma işlemini artık SQL Server 2012 ile beraber ücretsiz yapabiliriz.
2025461a-eb8d-4a40-8646-378be382e784|0|.0