Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Bu makalede, farklı yazılım teslim platformlarında SQL projeleri için otomasyon seçeneklerine genel bir bakış sağlanır. SQL veritabanı projelerini CI/CD işlem hatlarıyla tümleştirmek ve veritabanı değişikliklerini tutarlı ve sürekli olarak dağıtmak için otomasyonu kullanın.
Otomatikleştirmek için gerekenler
SQL projeleri otomasyonu genellikle CI/CD işlem hattında iki temel görev içerir:
SQL projesini oluşturma: Projeyi doğrulayın ve derlemek üzere SQL veritabanı projesinde çalıştırarak
dotnet builddağıtım yapıtını (.dacpac) oluşturun. İsteğe bağlı olarak, proje derlemesi sırasında kod kalitesini denetlemek için kod çözümleme kuralları yürütür.öğesini dağıtın
.dacpac: SqlPackage'ı veya platforma özgü bir görevi kullanarak hedef veritabanına yayımlayın.dacpac. Dağıtım, Doku'da Azure SQL Veritabanı, Azure SQL Yönetilen Örneği, SQL Server veya SQL veritabanını hedefleyebilir.
Bu adımları CI/CD işlem hattınızla tümleştirdiğinizde, veritabanı değişiklikleri her işlemede doğrulanır ve ortamlar arasında tutarlı bir şekilde dağıtılır.
Ortak kavramlar
Yapıt akışı: Tipik bir işlem hattı derleme ve dağıtım aşamalarını ayırır. Derleme aşaması SQL projesini derler ve daha sonra işlem hattı yapıtı olarak yayımlanan bir dosya oluşturur .dacpac . Sonraki bir dağıtım işinde (el ile onay aldıktan sonra), yapıt indirilir ve hedef veritabanına dağıtılır. Bu ayrım, tutarlılık sağlamak için bir kez derlemenize ve aynı yapıtı birden çok ortam için dağıtmanıza olanak tanır.
Yayımlama veya betik: Hassas ortamlara dağıtmadan önce dağıtım planını gözden geçirebilirsiniz. SqlPackage, değişiklik uygulanmadan dağıtım sırasında yürütülecek T-SQL betiğini oluşturan bir Script eylemi destekler. Sağlanan T-SQL betiği, veritabanı yöneticilerinin veya gözden geçirenlerin onaydan önce uygulamak için gereken değişiklikleri tam olarak incelemesine .dacpac olanak tanır. Benzer şekilde, DeployReport eylem planlanan değişikliklerin XML raporunu oluşturur.
Ortam onayları ve geçitleri: Üretim dağıtımları genellikle istenmeyen değişiklikleri önlemek için onay iş akışları gerektirir. Hem GitHub Actions hem de Azure DevOps ortam tabanlı onayları destekler. GitHub'da gerekli gözden geçirenler ve bekleme süreölçerleriyle ortamları yapılandırabilirsiniz. Azure DevOps'ta ortamlar onay geçitlerini, iş saatleri kısıtlamalarını ve diğer dağıtım denetimlerini destekler. Bu denetimler, üretime ulaşmadan önce veritabanı değişikliklerinin gözden geçirilmesini ve onaylanmasını sağlamaya yardımcı olur.
Önkoşullar
SqlPackage platformlar arasıdır ve Windows, Linux ve macOS üzerinde çalışır. Ortamlar arasında tutarlı bir davranış sağlamak için bunu bir .NET genel aracı olarak yükleyin.
Derleme aracısı üzerinde yüklü .NET SDK'sı.
Derleme aracısına yüklenen SqlPackage. SqlPackage'ı .NET genel aracı olarak yükleyebilirsiniz:
dotnet tool install --global microsoft.sqlpackage
Yazılım teslim platformları
Ekibinizin araç, uyumluluk ve bağlantı gereksinimleriyle eşleşen bir ortam seçin.
Yönetilen sanal ortamlar
GitHub Actions barındırılan çalıştırıcılar ve Azure Pipelines aracıları için Microsoft tarafından yönetilen sanal ortamlar önceden yüklenmiş araçlar içerir:
| Çevre | .NET SDK | SqlPackage |
|---|---|---|
| Windows | Preinstalled | Preinstalled |
| Linux | Preinstalled | Önceden yüklenmedi |
| macOS | Preinstalled | Önceden yüklenmedi |
Linux ve macOS ortamlarında iş akışınızın bir parçası olarak SqlPackage'ı yükleyin. İşlem hatlarında SqlPackage yükleme ve sürüm oluşturma hakkında daha fazla bilgi için bkz. Geliştirme işlem hatlarında SqlPackage.
Şirket içinde barındırılan ortamlar
Ortam üzerinde daha fazla denetime ihtiyacınız olduğunda şirket içinde barındırılan bir çalıştırıcıdan veya aracıdan dağıtın, örneğin:
- Ağ yalıtımı gereksinimleri (genel İnternet'e açık olmayan veritabanlarına erişme)
- Özel araçlar veya belirli SqlPackage sürümleri
- Uyumluluk veya güvenlik ilkeleri
Şirket içinde barındırılan çalıştırıcıları olay odaklı, sunucusuz yürütme için Azure Container Apps işleri olarak dağıtabilirsiniz. Dockerfile içindeki ortamı tanımlamak ve gerektiğinde SqlPackage ve diğer araçları yüklemek için bu yaklaşımı kullanın.
GitHub İşlemleri
Azure SQL Dağıtımı eylemi (azure/sql-action), GITHub Actions çalıştırıcılarından Azure SQL ve .dacpac SQL Server'a SQL projelerini ve dosyalarını dağıtmak için tümleşik bir deneyim sağlar.
Önemli özellikler:
- ,
.sqlprojveya.sqlbetikleri.dacpacdağıtır. - SQL kimlik doğrulama, Microsoft Entra Id kimlik doğrulaması ve hizmet sorumlusu kimlik doğrulamalarını destekler.
- ile
azure/loginbirleştirildiğinde Azure SQL Veritabanı için geçici güvenlik duvarı kurallarını otomatik olarak ekler ve kaldırır. - Hem Windows hem de Linux çalıştırıcılarında çalışır.
Örnek: GitHub Actions ile SQL projesi dağıtma
# .github/workflows/sql-deploy.yml
on: [push]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: azure/sql-action@v2
with:
connection-string: ${{ secrets.AZURE_SQL_CONNECTION_STRING }}
path: './Database.sqlproj'
action: 'publish'
Geçici güvenlik duvarı kuralı gerektiren Azure SQL Veritabanı dağıtımları için önce sql-actionadımını azure/login ekleyin:
- uses: azure/login@v2
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- uses: azure/sql-action@v2
with:
connection-string: ${{ secrets.AZURE_SQL_CONNECTION_STRING }}
path: './Database.dacpac'
action: 'publish'
SqlPackage'ı doğrudan herhangi bir çalıştırıcıda da kullanabilirsiniz. Daha fazla bilgi için bkz. Geliştirme işlem hatlarında SqlPackage.
Azure Boru Hatları
Azure DevOps, Dosyaları ve SQL betiklerini Azure SQL Veritabanı'na dağıtmak .dacpac için SqlAzureDacpacDeployment görevini sağlar.
Önemli özellikler:
-
.dacpacDosyaları dağıtır veya SQL betiklerini yürütür. - SQL kimlik doğrulama, Microsoft Entra Id kimlik doğrulaması ve hizmet sorumlusu kimlik doğrulamalarını destekler.
- Azure SQL Veritabanı için güvenlik duvarı kurallarını otomatik olarak yönetir.
- Bir Windows aracısı gerektirir (Doğrudan Linux aracılarında SqlPackage kullanın).
Örnek: Azure DevOps ile dağıtma .dacpac
# azure-pipelines.yml
trigger:
- main
pool:
vmImage: 'windows-latest'
steps:
- task: SqlAzureDacpacDeployment@1
inputs:
azureSubscription: 'your-service-connection'
AuthenticationType: 'server'
ServerName: 'your-server.database.windows.net'
DatabaseName: 'your-database'
SqlUsername: '$(SqlUser)'
SqlPassword: '$(SqlPassword)'
deployType: 'DacpacTask'
DeploymentAction: 'Publish'
DacpacFile: '$(Build.ArtifactStagingDirectory)/Database.dacpac'
Linux aracıları veya dağıtım işlemi üzerinde daha fazla denetim için sqlpackage'ı doğrudan kullanın:
steps:
- task: UseDotNet@2
inputs:
packageType: 'sdk'
version: '8.x'
- script: dotnet tool install --global microsoft.sqlpackage
displayName: 'Install SqlPackage'
- script: |
sqlpackage /Action:Publish \
/SourceFile:$(Build.ArtifactStagingDirectory)/Database.dacpac \
/TargetConnectionString:"$(ConnectionString)"
displayName: 'Deploy database'
Diğer CI/CD platformları
GitLab CI/CD, Jenkins, CircleCI veya diğerleri gibi platformlar için sql projelerini derlemek ve dağıtmak için doğrudan SqlPackage'ı kullanın.
Projeyi oluştur
dotnet build ./Database.sqlproj -c Release
.dacpac dağıtın
sqlpackage /Action:Publish \
/SourceFile:./bin/Release/Database.dacpac \
/TargetConnectionString:"Server=your-server;Database=your-db;User Id=user;Password=password;"
İlgili içerik
- Öğretici: SQL projesi oluşturma ve dağıtma
- SqlPackage geliştirme işlem hatlarında
- SQL projeleri araçları
- SqlPackage'a genel bakış
- Azure SQL Dağıtma eylemi (GitHub)
- SqlAzureDacpacDeployment görev başvurusu