Öğretici: Git'te veritabanı şemasını depolama

Şunun için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'teki SQL veritabanı

Git'te veritabanı şemasının depolanması sürüm denetimi, işbirliği ve zaman içinde değişiklikleri izleme gibi çeşitli avantajlar sağlar. Bu yaklaşım özellikle kod aracılığıyla veritabanı şemasını tanımladığınız ve orm veya GitHub Copilot gibi bir kodlama aracısı kullanarak değişiklikleri doğrudan geliştirme ortamına uyguladığınız kod öncelikli geliştirme için kullanışlıdır.

Bu öğreticide, veritabanı şemasını Git'te depolamayı ve geliştirme iş akışınızın bir parçası olarak yönetmeyi öğreneceksiniz.

  • Mevcut veritabanından yeni bir SQL projesi oluşturma
  • Veritabanı kodunu işleme ve git uzak deposuna gönderme
  • Veritabanındaki değişiklikleri var olan koda uygulama
  • Git uzak deposundaki değişiklikleri çekme ve yerel veritabanına uygulama (isteğe bağlı)

Öğretici bilgi akışını gösteren diyagram.

bitirdiğinizde, kaynak denetiminde veritabanınızı izlemeye ve git deposu aracılığıyla veritabanı değişiklikleri üzerinde ekibinizle işbirliği yapmaya hazırsınız demektir.

Note

Eğitimi tamamlamak için bir SQL veritabanına erişmeniz gerekir. Windows veya kapsayıcılardaSQL Server geliştirici sürümünü kullanarak yerel olarak ücretsiz olarak geliştirebilirsiniz.

Prerequisites

Warning

Bu öğretici, Visual Studio 2022'deki SDK stili projeler (önizleme) için kullanılamaz. Bunun yerine SQL Server Management Studio (SSMS) veya Visual Studio Code kullanın.

# install SqlPackage CLI
dotnet tool install -g Microsoft.SqlPackage

# install Microsoft.Build.Sql.Templates
dotnet new install Microsoft.Build.Sql.Templates

1. Adım: Mevcut veritabanından yeni bir SQL projesi oluşturma

Veritabanınızı kaynak denetiminde temsil etmek için SQL veritabanı proje biçimini kullanın. Proje, her veritabanı nesnesi için dosyalar ve veritabanı ayarları içeren bir .sql içerir.sqlproj. Projeyi dosya gezgininde ve kaynak denetiminde görüntülediğinizde, SQL projesinin yapısı nesne gezgininde veritabanına göz atmayı yansıtır.

Visual Studio'daki SQL Server Nesne Gezgini project oluşturmak istediğiniz veritabanına sağ tıklayın ve Yeni Project Oluştur... öğesini seçin. .

Visual Studio'da Veritabanını İçeri Aktar iletişim kutusunun ekran görüntüsü.

Yeni Project oluştur iletişim kutusuna bir project adı girin. Proje adının veritabanı adıyla eşleşmesi gerekmez. Proje konumunu gerektiği gibi doğrulayın ve değiştirin. Varsayılan içeri aktarma ayarları nesneleri şemaya göre klasörlere ve sonra nesne türüne göre içeri aktarır. İçeri aktarma ayarlarını değiştirerek klasör yapısını değiştirebilir veya içeri aktarılan nesnelere izinler ekleyebilirsiniz. İçeri aktarmayı başlatın.

Veritabanını İçeri Aktar iletişim kutusunda içeri aktarma ilerleme durumu ileti olarak görüntülenir. İçeri aktarma işlemi tamamlandığında, içeri aktarılan nesneleri Çözüm Gezgini içinde görebilirsiniz. İşlem, günlükleri proje dizinindeki Import Schema Logs bir dosyada depolar. Bitirseçin.

Warning

Bu öğretici, Visual Studio 2022'deki SDK stili projeler (önizleme) için kullanılamaz. Bunun yerine SQL Server Management Studio (SSMS) veya Visual Studio Code kullanın.

Visual Studio Code'daki veritabanı nesne gezgini görünümünde, proje oluşturmak istediğiniz veritabanını seçin. Veritabanına sağ tıklayın ve Veritabanından Proje Oluştur'u seçin.

Visual Studio Code'da Veritabanından Proje Oluştur iletişim kutusunun ekran görüntüsü

Visual Studio Code'da Veridan proje oluştur iletişim kutusu proje adını ve konumunu gerektirir. Varsayılan içeri aktarma ayarları nesneleri şemaya göre klasörlere ve sonra nesne türüne göre içeri aktarır. Farklı bir klasör yapısı seçebilir veya Oluştur'u seçmeden önce içeri aktarılan nesnelere izinler eklemeyi seçebilirsiniz.

Yeni projeyi ve içeri aktarılan nesne tanımlarını görmek için Veritabanı Projeleri görünümünü açın.

SQL Server Management Studio'daki Nesne Gezgini, project oluşturmak istediğiniz veritabanına sağ tıklayın ve Görevlermenüsünün altından Veritabanından Project Oluştur... öğesini seçin.

SQL Server Management Studio'daki Veritabanı iletişim kutusundaki Yeni SQL Project ekran görüntüsü.

Veritabanından SQL Project oluştur iletişim kutusunda, seçili veritabanını doğrulayın ve project adını ve konumunu gerektiği gibi değiştirin. Yeni proje, seçili veritabanındaki nesnelerle oluşturulur ve şemaya göre klasörler halinde düzenlenir ve sonra nesne türüne göre düzenlenir.

Proje klasörünün üstündeki klasörde otomatik olarak bir çözüm dosyası oluşturulur ve oluşturulduktan sonra Çözüm Gezgini açılır. Yeni projenizi mevcut bir çözüme eklemek istiyorsanız Çözüme ekle'yi seçin ve çözüm dosyasına göz atın. Projeyi oluşturmak için Oluştur'u seçin.

SqlPackage CLI'sini kullanarak var olan bir veritabanının şemasını bir SQL projesine ayıklayın. Aşağıdaki SqlPackage komutu, veritabanının şemasını tam bir SQL projesine ayıklar. Dosyalar .sql iç içe şema ve nesne türü klasörlerine göre düzenlenir ve veritabanının seçenekleriyle eşleşen özellikler kümesiyle projeyi yönetmek için bir .sqlproj dosya oluşturulur.

sqlpackage /a:Extract /ssn:localhost /sdn:MyDatabase /tf:MyDatabaseProject /p:ExtractTarget=SqlProject

2. Adım: Veritabanı kodunu işleme ve git uzak deposuna gönderme

SQL projesini oluşturduktan sonra, yerel git deposundaki veritabanı için Git zaman çizelgesini başlatın.

SQL projesi Visual Studio açıkken yerel bir Git deposu oluşturun ve uzak bir depoya gönderin.

  1. Menü çubuğunda>seçin.

  2. Git Deposu Oluştur iletişim kutusunda, Yeni uzak bir bölüme gönder bölümünde GitHub veya Azure DevOps seçin. GitHub’a pushlamayı seçerseniz, istendiğinde GitHub hesabınızla oturum açın. Azure DevOps seçerseniz, Azure DevOps hesabınızda oturum açın ve bir proje seçin veya oluşturun.

  3. Bir depo adı ve açıklaması girin. .gitignore şablonununVisualStudio olarak ayarlandığından emin olun ve Oluştur ve Gönder'i seçin.

Visual Studio yerel Git deposunu oluşturur, SQL proje dosyalarınız ile ilk işlemeyi yapar ve uzak konuma iletir.

Kodun başarıyla gönderildiğini doğrulamak için bir tarayıcı açın ve GitHub (https://github.com) veya Azure DevOps (https://dev.azure.com) üzerindeki deponuza gidin. Dosya ve .sqlproj nesne tanımları da dahil olmak üzere .sql SQL proje dosyalarını görmeniz gerekir.

Daha fazla bilgi için bkz. Visual Studio git hakkında.

Warning

Bu öğretici, Visual Studio 2022'deki SDK stili projeler (önizleme) için kullanılamaz. Bunun yerine SQL Server Management Studio (SSMS) veya Visual Studio Code kullanın.

SQL proje klasörü Visual Studio Code açıkken yerel bir Git deposu başlatın ve uzak bir depoya gönderin.

  1. Etkinlik Çubuğu'nda Kaynak Denetimi simgesini seçerek Kaynak Denetimi görünümünü açın veya tuşuna basın Ctrl+Shift+G.

  2. Geçerli klasörde yeni bir Git deposu oluşturmak için Depoyu Başlat'ı seçin.

  3. Tüm proje dosyaları izlenmeyen değişiklikler olarak görünür. + Tüm dosyaları hazırlamak için değişiklikler'in yanındaki simgeyi seçin.

  4. İleti giriş kutusuna gibi Initial commit of SQL project bir işleme iletisi girin ve İşleme düğmesini (onay işareti simgesi) seçin.

  5. Yerel deponuzu uzak bir depoya göndermek için Kaynak Denetimi görünümünde Dal Yayımla'yı seçin. GitHub veya Azure DevOps yayımlamayı seçin ve oturum açma istemlerini izleyin. Bir depo görünürlüğü (genel veya özel) seçin ve onaylayın.

Kodun başarıyla gönderildiğini doğrulamak için bir tarayıcı açın ve GitHub (https://github.com) veya Azure DevOps (https://dev.azure.com) üzerindeki deponuza gidin. Dosya ve .sqlproj nesne tanımları da dahil olmak üzere .sql SQL proje dosyalarını görmeniz gerekir.

Daha fazla bilgi için bkz. Visual Studio Code'de Kaynak Denetimi.

SQL projesi SQL Server Management Studio açıkken yerel bir Git deposu oluşturun ve uzak bir depoya gönderin.

  1. Menü çubuğunda>seçin.

  2. Git Deposu Oluştur iletişim kutusunda, Yeni uzak bir bölüme gönder bölümünde GitHub veya Azure DevOps seçin. GitHub’a pushlamayı seçerseniz, istendiğinde GitHub hesabınızla oturum açın. Azure DevOps seçerseniz, Azure DevOps hesabınızda oturum açın ve bir proje seçin veya oluşturun.

  3. Bir depo adı ve açıklaması girin. .gitignore şablonununVisualStudio olarak ayarlandığından emin olun ve Oluştur ve Gönder'i seçin.

SSMS yerel Git deposunu oluşturur, SQL proje dosyalarınız ile ilk işlemeyi yapar ve uzak konuma iletir.

Kodun başarıyla gönderildiğini doğrulamak için bir tarayıcı açın ve GitHub (https://github.com) veya Azure DevOps (https://dev.azure.com) üzerindeki deponuza gidin. Dosya ve .sqlproj nesne tanımları da dahil olmak üzere .sql SQL proje dosyalarını görmeniz gerekir.

Daha fazla bilgi için bkz. Visual Studio git hakkında.

SQL proje dizininden yerel bir Git deposu başlatın, tüm dosyaları işleyin ve uzak bir depoya gönderin.

  1. Yeni bir Git deposu başlatın, bir .gitignore dosya ekleyin ve ilk işlemeyi yapın:

    cd MyDatabaseProject
    git init
    dotnet new gitignore
    git add .
    git commit -m "Initial commit of SQL project"
    
  2. GitHub veya Azure DevOps yeni bir uzak depo oluşturun:

    • GitHub: Adresine https://github.com/new gidin ve yeni bir depo oluşturun. README, .gitignore veya lisans ile başlatmayın.
    • Azure DevOps: Azure DevOps projenize gidin, Repos seçin ve yeni bir depo oluşturun. README ekle seçeneğinin işaretini kaldırın.
  3. Uzaktan kumandayı ekleyin ve ilk işlemenizi gönderme:

    git remote add origin <your-repository-url>
    git push -u origin main
    

    <your-repository-url> öğesini, depoyu oluştururken GitHub veya Azure DevOps tarafından sağlanan URL ile değiştirin.

Kodun başarıyla gönderildiğini doğrulamak için bir tarayıcı açın ve deponuza gidin. Dosya ve .sqlproj nesne tanımları da dahil olmak üzere .sql SQL proje dosyalarını görmeniz gerekir.

3. Adım: Veritabanındaki değişiklikleri var olan koda uygulama

Veritabanı şeması SQL projesinin dışında değiştiğinde (örneğin, bir veritabanında doğrudan değişiklikler, ORM geçişi veya aracı eylemler aracılığıyla), projeyi bu değişiklikleri yansıtacak şekilde güncelleştirebilirsiniz.

SQL projesini veritabanından güncelleştirmek için şema karşılaştırmasını kullanın.

  1. SQL Server Nesne Gezgini'da veritabanına sağ tıklayın ve Şema Karşılaştırma'yı seçin.

  2. Şema Karşılaştırma penceresinde veritabanı kaynak olarak ayarlanır. Hedef Seç açılan listesini ve ardından Hedef Seç'i seçin.

  3. Hedef Şema Seç iletişim kutusunda Project'ı seçin ve SQL veritabanı project seçin. Tamam'ı seçin.

  4. Karşılaştırmayı çalıştırmak için Karşılaştır'ı seçin. Sonuçlar, veritabanı (kaynak) ile proje (hedef) arasındaki farkları görüntüler.

  5. Farklılıkları gözden geçirin. Projeye uygulamak istemediğiniz değişikliklerin işaretini kaldırın.

  6. Seçili değişiklikleri SQL projesine uygulamak için Güncelleştir'i seçin.

Proje dosyaları veritabanı şemasıyla eşleşecek şekilde güncelleştirilir. Git Değişiklikleri penceresindeki değişiklikleri gözden geçirin, bir işleme iletisi girin ve Tümünü İşle'yi seçin. Değişiklikleri uzak depoya göndermek için Gönder'i seçin.

Warning

Bu öğretici, Visual Studio 2022'deki SDK stili projeler (önizleme) için kullanılamaz. Bunun yerine SQL Server Management Studio (SSMS) veya Visual Studio Code kullanın.

SQL projesini veritabanından güncelleştirmek için Veritabanından Projeyi Güncelleştir komutunu kullanın.

  1. Veritabanı nesne gezgininde veritabanına sağ tıklayın ve Veritabanı'ndan SQL Veritabanı Projeleri>Güncelleştirme Project'ni seçin.

  2. Güncelleştirilecek ve onaylanan SQL veritabanı projesini seçin.

  3. Karşılaştırma çalışır ve veritabanındaki değişiklikleri projeye uygular. Güncelleştirilmiş .sql dosyalar , Kaynak Denetimi görünümünde değiştirilmiş dosyalar olarak görünür.

Kaynak Denetimi görünümünde değişiklikleri gözden geçirin, değiştirilen dosyaları hazırlayın, bir işleme iletisi girin ve İşle'yi seçin. İşlemeyi uzak depoya göndermek için Değişiklikleri Eşitle'yi seçin.

SQL projesini veritabanından güncelleştirmek için şema karşılaştırmasını kullanın.

  1. Nesne Gezgini'da veritabanına sağ tıklayın ve Görevler>Şema Karşılaştırması (önizleme) öğesini seçin.

  2. Şema Karşılaştırma penceresinde veritabanı kaynak olarak ayarlanır. Hedef üç nokta düğmesini seçin ve hedef olarak SQL veritabanı projenizi seçin.

  3. Karşılaştırmayı çalıştırmak için Karşılaştır'ı seçin. Sonuçlar, veritabanı (kaynak) ile proje (hedef) arasındaki farkları görüntüler.

  4. Farklılıkları gözden geçirin. Projeye uygulamak istemediğiniz değişikliklerin işaretini kaldırın.

  5. Seçili değişiklikleri SQL projesine uygulamak için Uygula'yı seçin.

Proje dosyaları veritabanı şemasıyla eşleşecek şekilde güncelleştirilir. Git Değişiklikleri penceresindeki değişiklikleri gözden geçirin, bir işleme iletisi girin ve Tümünü İşle'yi seçin. Değişiklikleri uzak depoya göndermek için Gönder'i seçin.

SqlPackage kullanarak SQL projesini veritabanından yeniden oluşturun ve mevcut proje dosyalarını geçerli veritabanı şemasıyla değiştirin. Diğer SQL proje araçları grafik arabirim sağlarken, SqlPackage otomasyon için dosya değişikliklerini uygulamadan önce gözden geçirme fırsatı sağlamayan bir komut satırı yaklaşımı sunar.

  1. Mevcut SQL nesne dosyalarını kaldırın ve projeyi yeniden oluşturun:

    rm -rf MyDatabaseProject
    sqlpackage /a:Extract /ssn:localhost /sdn:MyDatabase /tf:MyDatabaseProject /p:ExtractTarget=SqlProject
    
  2. Git ile değişiklikleri gözden geçirin ve işleyin:

    cd MyDatabaseProject
    dotnet new gitignore
    git add .
    git status
    git commit -m "Update project from database changes"
    git push
    

4. Adım: (isteğe bağlı) Git uzak deposundaki değişiklikleri çekme ve yerel veritabanına uygulama

Diğer ekip üyeleri veritabanı şeması değişikliklerini uzak depoya gönderdiklerinde, bu değişiklikleri çekip yerel geliştirme veritabanınıza dağıtabilirsiniz.

  1. Uzak depodan en son değişiklikleri çekmek için menü çubuğunda Git>seçin.

  2. Çözüm Gezgini'da SQL veritabanı proje düğümüne sağ tıklayın ve Şema Karşılaştırma'yı seçin.

  3. Şema Karşılaştırma penceresinde proje kaynak olarak ayarlanır. Hedef Seç açılan listesini ve ardından Hedef Seç'i seçin.

  4. Hedef Şema Seç iletişim kutusunda Veritabanı'nı seçin ve yerel geliştirme veritabanı bağlantınızı seçin. Tamam'ı seçin.

  5. Karşılaştırmayı çalıştırmak için Karşılaştır'ı seçin. Sonuçlar, proje (kaynak) ile veritabanı (hedef) arasındaki farkları görüntüler.

  6. Değişikliklerin beklendiğini doğrulamak için farklılıkları gözden geçirin.

  7. Değişiklikleri veritabanına uygulamak için Güncelleştir'i seçin.

Warning

Bu öğretici, Visual Studio 2022'deki SDK stili projeler (önizleme) için kullanılamaz. Bunun yerine SQL Server Management Studio (SSMS) veya Visual Studio Code kullanın.

  1. Kaynak Denetimi görünümünü açın ve uzak depodan en son değişiklikleri çekmek için ... menüsünden Çek'i seçin (veya Durum Çubuğu'ndaki eşitleme düğmesini kullanın).

  2. Veritabanı Projeleri görünümünde SQL veritabanı projesine sağ tıklayın ve Şema Karşılaştırma'yı seçin.

  3. Şema Karşılaştırma penceresinde proje kaynak olarak ayarlanır. Hedef üç nokta düğmesini seçin ve hedef olarak yerel geliştirme veritabanı bağlantınızı seçin.

  4. Karşılaştırmayı çalıştırmak için Karşılaştır'ı seçin. Sonuçlar, proje (kaynak) ile veritabanı (hedef) arasındaki farkları görüntüler.

  5. Değişikliklerin beklendiğini doğrulamak için farklılıkları gözden geçirin.

  6. Değişiklikleri veritabanına uygulamak için Uygula'yı seçin.

  1. Bir terminal açın ve uzak depodan en son değişiklikleri çekmek için proje dizininde komutunu çalıştırın git pull .

  2. Çözüm Gezgini'da SQL veritabanı proje düğümüne sağ tıklayın ve Şema Karşılaştırması (önizleme) öğesini seçin.

  3. Şema Karşılaştırma penceresinde proje kaynak olarak ayarlanır. Hedefi seçin ve yerel geliştirme veritabanı bağlantınızı seçin.

  4. Karşılaştırmayı çalıştırmak için Karşılaştır'ı seçin. Sonuçlar, proje (kaynak) ile veritabanı (hedef) arasındaki farkları görüntüler.

  5. Değişikliklerin beklendiğini doğrulamak için farklılıkları gözden geçirin.

  6. Değişiklikleri veritabanına uygulamak için Uygula'yı seçin.

  1. Uzak depodan en son değişiklikleri çekin:

    cd MyDatabaseProject
    git pull
    
  2. Değişikliklerin başarıyla derlendiğini doğrulamak için projeyi derleyin:

    dotnet build
    
  3. SqlPackage kullanarak değişiklikleri yerel geliştirme veritabanınıza dağıtın:

    sqlpackage /a:Publish /sf:bin/Debug/MyDatabaseProject.dacpac /tsn:localhost /tdn:MyDatabase
    

    MyDatabaseProject.dacpac değerini .dacpac çıkış dosyanızın adıyla değiştirin ve hedef sunucu (/tsn) ile veritabanı (/tdn) değerlerini gerektiği gibi güncelleyin.