Aracılığıyla paylaş


Şema karşılaştırmaya genel bakış

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıMicrosoft Fabric'de Azure SQL Yönetilen ÖrneğiSQL veritabanı

Şema karşılaştırma araçları, karşılaştırmanın kaynağı ve hedefinin bağlı veritabanı, SQL veritabanı projesi veya .dacpac dosyasının herhangi bir birleşimi olabileceği iki veritabanı tanımını karşılaştırmanıza olanak tanır. Karşılaştırma tamamlandıktan sonra, karşılaştırma sonuçları hedefi kaynakla aynı hale getiren bir dizi eylem olarak görünür. Veritabanı modelleri arasındaki farklar, kaynak denetimi farkları gibi benzer bir şekilde sunulur. Şema karşılaştırma hedefi bir SQL projesi veya veritabanıysa, hedefi doğrudan şema karşılaştırma arabiriminden güncelleştirebilir veya aynı etkiye sahip bir güncelleştirme betiği oluşturabilirsiniz.

Kavram olarak paket ve veritabanı arasındaki farkların ekran görüntüsü.

Şema karşılaştırması aşağıdaki özellikleri sağlar:

  • İki .dacpac dosya, veritabanı veya SQL projesi arasındaki şemaları karşılaştırın.
  • Sonuçları, bir hedefi kaynakla eşleştirmek için bir dizi eylem olarak görüntüleyin.
  • Sonuçlarda listelenen eylemleri seçerek hariç tutun.
  • Karşılaştırmanın kapsamını kontrol eden seçenekleri belirleyin.
  • Değişiklikleri doğrudan hedefe uygulayın veya değişiklikleri daha sonra uygulamak için bir betik oluşturun.
  • Karşılaştırmayı kaydet.

İşlevsellik

Kaynak ve hedef arasındaki farklar, kolay gözden geçirme için bir kılavuzda görünür. Karşılaştırma, aşağıdaki seçeneklerden herhangi birinden türetilen bir veritabanı modeli arasında iki yönde de yapılabilir:

  • bağlı veritabanı
  • SQL veritabanı projesi
  • .dacpac dosyası

Şema karşılaştırmasında, sonuçlar kılavuzunda veya değişikliklerin ayrıntılarının satır bazında sunulduğu betik biçiminde her farkın detayına inebilir ve inceleyebilirsiniz. Ayrıca, hedefi güncelleştirmeden önce belirli farkları seçmeli olarak hariç tutabilirsiniz. Şema karşılaştırma araçları Visual Studio, Azure Data Studio ve komut satırında kullanılabilir.

Şema karşılaştırma seçenekleri

Şema karşılaştırma seçenekleri, DacFx .NET kitaplığından sağlanan dağıtım seçeneklerinden alınır. Bu seçenekler şunlardır:

  • boşluğu yoksay
  • bölüm şemalarını yoksay
  • sütun sırasını göz ardı et
  • kaynakta olmayan dizinleri sil
  • olası veri kaybına karşı engelleme

Karşılaştırmaya dahil edilen nesne türleri de yapılandırılabilir. Bu nesneler tablolar, saklı yordamlar, dizinler, izinler, kullanıcı tanımlı türler ve daha fazlasını içerir.

Şema karşılaştırma dosyaları

Şema karşılaştırması için karşılaştırma tanımı, .scmp şema karşılaştırma dosyası olarak bilinen bir dosya olarak kaydedilebilir. Bu dosya XML'de şema karşılaştırması hakkındaki bilgileri depolar ve şunları içerir:

  • kaynak ve hedef bağlantı bilgileri
  • karşılaştırma seçenekleri
  • dışlanan nesne türleri

Aynı .scmp karşılaştırmayı daha sonra kolayca çalıştırmak veya karşılaştırmayı başkalarıyla paylaşmak için Visual Studio veya Azure Data Studio'da bir dosya açılabilir.

Şema karşılaştırmayı başlatma ve kullanma

  1. Visual Studio'daki Araçlar menüsünde SQL Server'ı ve ardından Yeni Şema Karşılaştırması'nı seçin.

    Alternatif olarak, Çözüm Gezgini'ndeTradeDev projesine sağ tıklayın ve Şema Karşılaştırma'yı seçin.

    Şema Karşılaştırma penceresi açılır ve Visual Studio buna otomatik olarak gibi SqlSchemaCompare1bir ad atar.

    Aralarında yeşil ok bulunan iki açılan liste menüsü Şema Karşılaştırması pencere araç çubuğunun hemen altında görünür. Bu menüler, karşılaştırma kaynağınız ve hedefiniz için veritabanı tanımlarını seçmenize olanak tanır.

  2. Kaynak Seç açılan listesinde Kaynak Seç'i seçtiğinizde Kaynak Şeması seç iletişim kutusu açılır.

    Proje adına sağ tıklayarak Şema Karşılaştırma penceresini açtıysanız, kaynak şema zaten doldurulur ve 4. adıma geçebilirsiniz.

    Visual Studio'da Şema karşılaştırma kaynağı seçme iletişim kutusunun ekran görüntüsü.

  3. Proje, Veritabanı bağlantısı veya .dacpac dosyası seçerek şema karşılaştırma kaynağı seçimlerini tamamlayın. Kaynak, hedefte yapılan değişiklikler için temel olarak kullanmak istediğiniz veritabanı tanımıdır.

  4. Hedef Seç açılır menüsünden Hedefi Seç'i seçin, ardından Hedef Şema Seç iletişim kutusu açılır. Proje, Veritabanı bağlantısı veya .dacpac dosyası seçerek şema karşılaştırma hedefi seçimlerini tamamlayın. Hedef, değerlendirmek ve değişiklikleri uygulamak istediğiniz veritabanı tanımıdır.

  5. Hangi nesnelerin karşılaştırılacağını, ne tür farklılıkların yoksayılacağını ve diğer ayarları belirtmek için Şema Karşılaştırma Penceresi araç çubuğundaki Seçenekler düğmesini de seçebilirsiniz.

  6. Karşılaştırma işlemini başlatmak için Şema Karşılaştırma Penceresi araç çubuğunda Karşılaştır düğmesini seçin.

    Karşılaştırma tamamlandığında, proje ve veritabanı arasındaki yapısal farklar pencerenin üst kısmındaki Sonuçlar bölmesinde görünür. Karşılaştırma sonuçları tüm farkları varsayılan olarak eyleme (Sil, Değiştir veya Ekle gibi) göre gruplandırılır. Sonuçlar bölmesinde, veritabanı tanımları arasında farklılık gösteren her veritabanı nesnesi için bir satır görüntülenir. Her satır, kaynak veya hedef şemadaki (veya her ikisinde) nesneyi ve hedef nesneyi kaynak nesneyle aynı yapmak için hedef şemada gerçekleştirilecek eylemi tanımlar. Bir nesne yeniden düzenlenmişse ve yeniden adlandırıldıysa veya yeni bir şemaya taşındıysa, kaynak ve hedef adları farklıdır ve kaynak adı kalın yazı tipinde görünür ve farkı vurgular.

    Visual Studio'da veritabanını bir projeyle karşılaştıran Şema karşılaştırma arabiriminin ekran görüntüsü.

    Varsayılan olarak, sonuç listesi her iki şemada da aynı olan veya güncelleştirme için desteklenmeyen nesneleri gizler (örneğin, yerleşik nesneler). Bu nesneleri göstermek için araç çubuğunda uygun filtre düğmelerini seçebilirsiniz.

    Araç çubuğundaki Grup Sonuçları açılır listesini seçerek grup tercihini değiştirebilirsiniz. Sonuçları nesne türüne göre (örneğin, tablolara, görünümlere veya saklı yordamlara göre) gruplandırmak için Tür'e tıklayın.

  7. Varsayılan olarak tüm farklar Hedefi Güncelleştir eyleminin kapsamına eklenir. Eşitlemek istemediğiniz farkları dışlayabilirsiniz. Bunu yapmak için, her satırın ortasındaki Eylem sütununun işaretini kaldırın. Alternatif olarak, Şema bölmesinde bir satıra sağ tıklayın ve Dışla'yı seçin. Satır hemen gri görünür. Hedef veritabanını güncelleştirmek için şema karşılaştırması kullanıldığında, bekleyen değişiklikler için bu satır dikkate alınmaz.

    Ayrıca bir grup satırına sağ tıklayıp Tümünü Dışla veya Tümünü Dahil Et'i seçebilirsiniz. Bu, söz konusu gruptaki tüm farklılıkların işaretini kaldırmaya veya denetlemeye eşdeğerdir. Sonuçları şemaya göre gruplandırdığınızda, grup satırına sağ tıklamak, belirli bir şemadaki tüm değişiklikleri dahil etmek veya dışlamak için kullanışlı bir yoldur.

    Dışlanan satırda bağımlı nesneler varsa (örneğin, Görünümsatırı tarafından başvuruda bulunılan tablo satırı), dışlanan satır devre dışı bırakılır ancak onay kutusu temizlenmez. Buna bağımlı olan tüm satırların işareti kaldırıldıktan sonra, devre dışı bırakılan satır işareti kaldırılır. Ayrıca, bir satır yeniden düzenlenmişse (yeniden adlandırılır veya başka bir şemaya taşınırsa), bu satır ve bağımlı alt satırlarından herhangi biri için onay kutusu devre dışı bırakılır.

    Karşılaştırmayı yenilerseniz, göz ardı etmeyi seçtiğiniz farklar yoksayılır.

Hedefin şemasını güncelleştirmek için iki seçeneğiniz vardır. Hedef bir veritabanı veya projeyse, hedefi doğrudan Şema Karşılaştırma penceresinden güncelleştirebilir veya hedef bir veritabanı veya veritabanı dosyasıysa bir güncelleştirme betiği oluşturabilirsiniz. Oluşturulan bir betik, Transact-SQL Düzenleyicisi'nde görüntülenir ve buradan betiği bir veritabanında çalıştırmadan önce ayrıntılı olarak inceleyebilirsiniz.

Uyarı

Grafik şema karşılaştırması, Visual Studio'daki SDK stili SQL projeleri önizlemesinde kısmen kullanılabilir. Bağlı veritabanları ve .dacpac dosyalar için şema karşılaştırmaları mevcuttur, SQL veritabanı projeleri henüz kullanılabilir değildir.

  1. Visual Studio'daki Araçlar menüsünde SQL Server'ı ve ardından Yeni Şema Karşılaştırması'nı seçin.

    Alternatif olarak, Çözüm Gezgini'ndeTradeDev projesine sağ tıklayın ve Şema Karşılaştırma'yı seçin.

    Şema Karşılaştırma penceresi açılır ve Visual Studio buna otomatik olarak gibi SqlSchemaCompare1bir ad atar.

    Aralarında yeşil ok bulunan iki açılan liste menüsü Şema Karşılaştırması pencere araç çubuğunun hemen altında görünür. Bu menüler, karşılaştırma kaynağınız ve hedefiniz için veritabanı tanımlarını seçmenize olanak tanır.

  2. Kaynak Seç açılan listesinde Kaynak Seç'i seçtiğinizde Kaynak Şeması seç iletişim kutusu açılır.

    Proje adına sağ tıklayarak Şema Karşılaştırma penceresini açtıysanız, kaynak şema zaten doldurulur ve 4. adıma geçebilirsiniz.

    Visual Studio'da Şema karşılaştırma kaynağı seçme iletişim kutusunun ekran görüntüsü.

  3. Proje, Veritabanı bağlantısı veya .dacpac dosyası seçerek şema karşılaştırma kaynağı seçimlerini tamamlayın. Kaynak, hedefte yapılan değişiklikler için temel olarak kullanmak istediğiniz veritabanı tanımıdır.

  4. Hedef Seç açılır menüsünden Hedefi Seç'i seçin, ardından Hedef Şema Seç iletişim kutusu açılır. Proje, Veritabanı bağlantısı veya .dacpac dosyası seçerek şema karşılaştırma hedefi seçimlerini tamamlayın. Hedef, değerlendirmek ve değişiklikleri uygulamak istediğiniz veritabanı tanımıdır.

  5. Hangi nesnelerin karşılaştırılacağını, ne tür farklılıkların yoksayılacağını ve diğer ayarları belirtmek için Şema Karşılaştırma Penceresi araç çubuğundaki Seçenekler düğmesini de seçebilirsiniz.

  6. Karşılaştırma işlemini başlatmak için Şema Karşılaştırma Penceresi araç çubuğunda Karşılaştır düğmesini seçin.

    Karşılaştırma tamamlandığında, proje ve veritabanı arasındaki yapısal farklar pencerenin üst kısmındaki Sonuçlar bölmesinde görünür. Varsayılan olarak, karşılaştırma sonuçları tüm farkları eyleme (Sil, Değiştir veya Ekle gibi) göre gruplandırılır. Sonuçlar bölmesinde, veritabanı tanımları arasında farklılık gösteren her veritabanı nesnesi için bir satır görüntülenir. Her satır, kaynak veya hedef şemadaki (veya her ikisinde) nesneyi ve hedef nesneyi kaynak nesneyle aynı yapmak için hedef şemada gerçekleştirilecek eylemi tanımlar. Bir nesne yeniden düzenlenmişse ve yeniden adlandırıldıysa veya yeni bir şemaya taşındıysa, kaynak ve hedef adları farklıdır ve kaynak adı kalın yazı tipinde görünür ve farkı vurgular.

    Visual Studio'da veritabanını bir projeyle karşılaştıran Şema karşılaştırma arabiriminin ekran görüntüsü.

    Varsayılan olarak, sonuç listesi her iki şemada da aynı olan veya güncelleştirme için desteklenmeyen nesneleri gizler (örneğin, yerleşik nesneler). Bu nesneleri göstermek için araç çubuğunda uygun filtre düğmelerini seçebilirsiniz.

    Araç çubuğundaki Grup Sonuçları açılır listesini seçerek grup tercihini değiştirebilirsiniz. Sonuçları nesne türüne göre (örneğin, tablolara, görünümlere veya saklı yordamlara göre) gruplandırmak için Tür'e tıklayın.

  7. Varsayılan olarak tüm farklar Hedefi Güncelleştir eyleminin kapsamına eklenir. Eşitlemek istemediğiniz farkları dışlayabilirsiniz. Bunu yapmak için, her satırın ortasındaki Eylem sütununun işaretini kaldırın. Alternatif olarak, Şema bölmesinde bir satıra sağ tıklayın ve Dışla'yı seçin. Satır hemen gri görünür. Hedef veritabanını güncelleştirmek için şema karşılaştırması kullanıldığında, bekleyen değişiklikler için bu satır dikkate alınmaz.

    Ayrıca bir grup satırına sağ tıklayıp Tümünü Dışla veya Tümünü Dahil Et'i seçebilirsiniz. Bu, söz konusu gruptaki tüm farklılıkların işaretini kaldırmaya veya denetlemeye eşdeğerdir. Sonuçları şemaya göre gruplandırdığınızda, bu, belirli bir şemadaki tüm değişiklikleri dahil etmenin veya dışlamanın kullanışlı bir yoludur.

    Dışlanan satırda bağımlı nesneler varsa (örneğin, Görünümsatırı tarafından başvuruda bulunılan tablo satırı), dışlanan satır devre dışı bırakılır ancak onay kutusu temizlenmez. Buna bağımlı olan tüm satırların işareti kaldırıldıktan sonra, devre dışı bırakılan satır işareti kaldırılır. Ayrıca, bir satır yeniden düzenlenmişse (yeniden adlandırılır veya başka bir şemaya taşınırsa), bu satır ve bağımlı alt satırlarından herhangi biri için onay kutusu devre dışı bırakılır.

    Karşılaştırmayı yenilerseniz, atlamayı seçtiğiniz farklar yoksayılır.

Hedefin şemasını güncelleştirmek için iki seçeneğiniz vardır. Hedef bir veritabanı veya projeyse, hedefi doğrudan Şema Karşılaştırma penceresinden güncelleştirebilir veya hedef bir veritabanı veya veritabanı dosyasıysa bir güncelleştirme betiği oluşturabilirsiniz. Oluşturulan bir betik, Transact-SQL Düzenleyicisi'nde görüntülenir ve buradan betiği bir veritabanında çalıştırmadan önce ayrıntılı olarak inceleyebilirsiniz.

Visual Studio Code'da şema karşılaştırması hakkında daha ayrıntılı bilgi için Şema Karşılaştırma (Önizleme) makalesinde bulabilirsiniz

  1. Komut paletindekictrl/cmd+shift+P ( ) Visual Studio Code'da MSSQL: Şema Karşılaştırması (Önizleme) için arama yapın ve seçin.

    Alternatif olarak, Veritabanı Projeleri görünümünde bir veritabanı projesine veya Nesne Gezgini'ndeki bir veritabanına sağ tıklayıp Şema Karşılaştırma'yı seçin.

    Visual Studio Code nesne gezgininde Şema karşılaştırma menü öğesinin ekran görüntüsü.

    Şema Karşılaştırma penceresi açılır ve başlatma noktasına göre bir kaynak veya hedef önceden ayarlanmış olabilir.

    Şema Karşılaştırma penceresi araç çubuğunun hemen altında, ortasında ok olan iki tane üç nokta düğmesi görünür. Bu menüler, karşılaştırma kaynağınız ve hedefiniz için veritabanı tanımlarını seçmenize olanak tanır.

  2. Kaynak veya hedef için üç nokta düğmesinin seçilmesi, her birinin güncelleştirilebileceği bir iletişim kutusu açar. Proje, Veritabanı bağlantısı veya .dacpac dosyası seçerek şema karşılaştırma kaynağı seçimlerini tamamlayın. Kaynak, hedefte yapılan değişiklikler için temel olarak kullanmak istediğiniz veritabanı tanımıdır. Hedef, değerlendirmek ve değişiklikleri uygulamak istediğiniz veritabanı tanımıdır.

    Visual Studio Code'da Şema karşılaştırma kaynağı seçme iletişim kutusunun ekran görüntüsü.

    Seçimler tamamlandıktan sonra tamam'ı seçerek iletişim kutusunu kapatın ve Şema Karşılaştırma penceresine dönün.

  3. Hangi nesnelerin karşılaştırılacağını, ne tür farklılıkların yoksayılacağını ve diğer ayarları belirtmek için Şema Karşılaştırma Penceresi araç çubuğundaki Seçenekler düğmesini de seçebilirsiniz.

  4. Karşılaştırma işlemini başlatmak için Şema Karşılaştırma Penceresi araç çubuğunda Karşılaştır düğmesini seçin.

    Karşılaştırma tamamlandığında, proje ve veritabanı arasındaki yapısal farklar pencerenin üst kısmındaki Sonuçlar bölmesinde görünür. Varsayılan olarak, karşılaştırma sonuçları tüm farkları eyleme (Sil, Değiştir veya Ekle gibi) göre gruplandırılır. Sonuçlar bölmesinde, veritabanı tanımları arasında farklılık gösteren her veritabanı nesnesi için bir satır görüntülenir. Her satır, kaynak veya hedef şemadaki (veya her ikisinde) nesneyi ve hedef nesneyi kaynak nesneyle aynı yapmak için hedef şemada gerçekleştirilecek eylemi tanımlar. Bir nesne yeniden düzenlenmişse ve yeniden adlandırıldıysa veya yeni bir şemaya taşındıysa, kaynak ve hedef adları farklıdır ve kaynak adı kalın yazı tipinde görünür ve farkı vurgular.

    Azure Data Studio'da bir veritabanını projeyle karşılaştıran Şema karşılaştırma arabiriminin ekran görüntüsü.

  5. Varsayılan olarak tüm farklar Hedefi Güncelleştir eyleminin kapsamına eklenir. Eşitlemek istemediğiniz farkları dışlayabilirsiniz. Bunu yapmak için, her satırın ortasındaki Eylem sütununun işaretini kaldırın. Hedef veritabanını güncelleştirmek için şema karşılaştırması kullanıldığında, bekleyen değişiklikler için bu satır dikkate alınmaz.

    Dışlanan satırda bağımlı nesneler varsa (örneğin, Görünümsatırı tarafından başvuruda bulunılan tablo satırı), dışlanan satır devre dışı bırakılır ancak onay kutusu temizlenmez. Buna bağımlı olan tüm satırların işareti kaldırıldıktan sonra, devre dışı bırakılan satır işareti kaldırılır. Ayrıca, bir satır yeniden düzenlenmişse (yeniden adlandırılır veya başka bir şemaya taşınırsa), bu satır ve bağımlı alt satırlarından herhangi biri için onay kutusu devre dışı bırakılır.

    Karşılaştırmayı yenilerseniz, atlamayı seçtiğiniz farklar yoksayılır.

Hedefin şemasını güncelleştirmek için iki seçeneğiniz vardır. Hedef bir veritabanı veya projeyse, hedefi doğrudan Şema Karşılaştırmapenceresinden Uygula düğmesiyle güncelleştirebilir veya hedef betik oluştur düğmesiyle bir veritabanıysa bir güncelleştirme betiği oluşturabilirsiniz. Oluşturulan bir betik, Transact-SQL Düzenleyicisi'nde görüntülenir ve buradan betiği bir veritabanında çalıştırmadan önce ayrıntılı olarak inceleyebilirsiniz.

Şema karşılaştırması, Visual Studio veya Azure Data Studio gibi grafiksel bir araç gerektirir.