SqlPackage dalam alur pengembangan
SqlPackage adalah utilitas baris perintah yang mengotomatiskan beberapa tugas pengembangan database dan dapat dimasukkan ke dalam alur CI/CD.
Lingkungan virtual
Catatan
Memanfaatkan penginstalan mandiri SqlPackage untuk otomatisasi alur disarankan daripada menggunakan executable SqlPackage yang dibundel dengan aplikasi lain, termasuk SQL Server Management Studio atau Visual Studio. Penginstalan mandiri SqlPackage diperbarui lebih sering dan tidak terkait dengan irama rilis aplikasi lain.
Di Windows, instalasi mandiri SqlPackage tersedia di jalur C:\Program Files\Microsoft SQL Server\160\DAC\bin
(DacFx.msi) atau %USERPROFILE%\.dotnet\tools
(alat dotnet). Di Linux, penginstalan mandiri SqlPackage tersedia di jalur ~/.dotnet/tools
(alat dotnet). Di lingkungan Windows dan Linux, jika Anda mengunduh .zip SqlPackage mandiri untuk .NET Core, Anda dapat mengekstrak yang dapat dieksekusi ke lokasi yang Anda pilih.
Lingkungan virtual terkelola
Lingkungan virtual yang digunakan untuk runner yang dihosting GitHub Actions dan gambar VM Azure Pipelines dikelola di repositori GitHub runner-images . SqlPackage disertakan dalam beberapa lingkungan termasuk windows-latest
dan ubuntu-latest
. Pembaruan pada gambar dalam gambar runner dibuat dalam beberapa minggu dari setiap rilis SqlPackage.
Lingkungan virtual yang dihost sendiri
Di lingkungan virtual yang dihost sendiri seperti agen Azure DevOps yang dihost sendiri, perbarui aplikasi secara teratur untuk mempertahankan lingkungan dengan versi terbaru.
Melacak penyebaran
Anda dapat mengambil beberapa file yang terkait dengan SqlPackage untuk mereproduksi alur dan meningkatkan pelacakan penyebaran. Implementasi dan kasus penggunaan tergantung pada arsitektur dan lingkungan otomatisasi spesifik Anda.
- File Dacpac
- Output file diagnostik dari tindakan apa pun: Gunakan
/DiagnosticsFile:
parameter pada tindakan SqlPackage apa pun, lihat Mendapatkan diagnostik SqlPackage di agen alur - Output dari tindakan skrip sebelum menerbitkan tindakan: Gunakan tindakan Script SqlPackage sebelum memanggil tindakan terbitkan
Contoh SqlPackage lainnya
Memeriksa versi SqlPackage
Selama upaya pemecahan masalah, penting untuk mengetahui versi SqlPackage sedang digunakan. Menangkap informasi ini dapat dilakukan dengan menambahkan langkah ke alur untuk menjalankan SqlPackage dengan /version
parameter . Contoh diberikan di bawah ini berdasarkan lingkungan terkelola Microsoft dan GitHub, lingkungan yang dihost sendiri mungkin memiliki jalur penginstalan yang berbeda untuk direktori kerja.
Azure Pipelines
Dalam Azure Pipeline, kata kunci skrip mengembalikan nomor versi SqlPackage.
- script: SqlPackage /version
workingDirectory: 'C:\Program Files\Microsoft SQL Server\160\DAC\bin\'
displayName: 'get sqlpackage version'
GitHub Actions
Dalam alur kerja GitHub Action, kata kunci eksekusi mengembalikan nomor versi SqlPackage.
- name: get sqlpackage version
working-directory: 'C:\Program Files\Microsoft SQL Server\160\DAC\bin\'
run: ./SqlPackage /version
Mendapatkan diagnostik SqlPackage di agen alur
Informasi diagnostik dari SqlPackage tersedia di baris perintah melalui parameter /DiagnosticsFile
, yang dapat digunakan di lingkungan virtual seperti Azure Pipelines dan GitHub Actions. Informasi diagnostik ditulis ke file di direktori kerja. Nama file ditentukan oleh /DiagnosticsFile
parameter .
Azure Pipelines
/DiagnosticsFile
Menambahkan parameter ke bidang "Argumen SqlPackage Tambahan" di konfigurasi Azure Pipeline SqlAzureDacpacDeployment akan menyebabkan informasi diagnostik SqlPackage ditulis ke file yang ditentukan. Mengikuti tugas SqlAzureDacpacDeployment, file diagnostik dapat tersedia di luar lingkungan virtual dengan menerbitkan artefak alur seperti yang terlihat dalam contoh di bawah ini.
- task: SqlAzureDacpacDeployment@1
inputs:
azureSubscription: '$(azuresubscription)'
AuthenticationType: 'server'
ServerName: '$(servername)'
DatabaseName: '$(databasename)'
SqlUsername: '$(sqlusername)'
SqlPassword: '$(sqladminpassword)'
deployType: 'DacpacTask'
DeploymentAction: 'Publish'
DacpacFile: '$(Build.Repository.LocalPath)\$(dacpacname).dacpac'
AdditionalArguments: '/DiagnosticsFile:$(System.DefaultWorkingDirectory)/output.log'
IpDetectionMethod: 'AutoDetect'
- task: PublishPipelineArtifact@1
inputs:
targetPath: '$(System.DefaultWorkingDirectory)/output.log'
artifact: 'Diagnostic File'
publishLocation: 'pipeline'
Setelah eksekusi alur, file diagnostik dapat diunduh dari halaman ringkasan eksekusi di bawah "Artefak yang Diterbitkan".
GitHub Actions
/DiagnosticsFile
Menambahkan parameter ke bidang "argumen" di konfigurasi tindakan sql Tindakan GitHub akan menyebabkan informasi diagnostik SqlPackage ditulis ke file yang ditentukan. Setelah tugas tindakan sql, file diagnostik dapat disediakan di luar lingkungan virtual dengan menerbitkan artefak seperti yang terlihat dalam contoh di bawah ini.
- name: Azure SQL Deploy
uses: Azure/sql-action@v2
with:
# The connection string, including authentication information, for the Azure SQL Server database.
connection-string: ${{ secrets.AZURE_SQL_CONNECTION_STRING }}
# Path to DACPAC file to deploy
path: .\DatabaseProjectAdventureWorksLT\bin\Release\DatabaseProjectAdventureWorksLT.dacpac
action: publish
# additional SqlPackage arguments
arguments: /DiagnosticsFile:DatabaseProjectAdventureWorksLT/DiagnosticLog.log
- uses: actions/upload-artifact@v2
with:
name: 'DiagnosticLog.txt'
path: 'DatabaseProjectAdventureWorksLT/DiagnosticLog.log'
Memperbarui SqlPackage pada agen alur
Dalam beberapa skenario, versi SqlPackage saat ini yang diinstal di lingkungan alur mungkin tidak cukup. Jika lingkungan tidak dapat dimodifikasi secara langsung, langkah tambahan dapat digunakan untuk menginstal versi SqlPackage yang lebih baru selama eksekusi alur. Penting untuk menjalankan langkah penginstalan sebelum menjalankan operasi DacPac atau BacPac dalam alur. Tugas ini dapat dikombinasikan dengan langkah untuk memeriksa versi untuk memastikan bahwa peningkatan selesai seperti yang diharapkan.
Azure Pipelines
Saat tugas PowerShell digunakan dalam Azure Pipeline, langkah dapat ditambahkan ke Azure Pipeline yang mengunduh MSI yang diinginkan dan menginstalnya secara diam-diam.
- task: PowerShell@2
displayName: 'upgrade sqlpackage'
inputs:
targetType: 'inline'
script: |
# use evergreen or specific dacfx msi link below
wget -O DacFramework.msi "https://aka.ms/dacfx-msi"
msiexec.exe /i "DacFramework.msi" /qn
Langkah berikutnya
- Pelajari selengkapnya tentang SqlPackage