Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Az SqlPackage egy parancssori segédprogram, amely számos adatbázis-fejlesztési feladatot automatizál, és beépíthető a CI/CD-folyamatokba.
Megjegyzés:
A folyamatautomatizáláshoz ajánlott az SqlPackage önálló telepítésének használata, ahelyett hogy a más alkalmazásokkal, például az SQL Server Management Studióval vagy a Visual Studióval együtt csomagolt SqlPackage futtatható fájlokat használnánk. Az SqlPackage önálló telepítése gyakrabban frissül, és nem kapcsolódik más alkalmazások kiadási üteméhez.
Ha az SqlPackage globális dotnet-eszközként van telepítve (ajánlott), egyszerűen bármelyik könyvtárból meghívhatja azt a folyamatban sqlpackage . Ha az SqlPackage különálló futtatható fájlként van telepítve, meg kell adnia a futtatható fájl teljes elérési útját a folyamatban. Windows rendszeren az SqlPackage önálló telepítése elérhető az elérési úton C:\Program Files\Microsoft SQL Server\170\DAC\bin (DacFx.msi). **
Windows- és Linux-környezetben, ha letölti az önálló .zip SqlPackage a .NET számára, a végrehajtható fájl egy ön által választott helyre bontható ki.
Felügyelt virtuális környezetek
A GitHub Actions által üzemeltetett futókhoz és az Azure Pipelines virtuálisgép-rendszerképekhez használt virtuális környezetek a futóképek GitHub-adattárában vannak kezelve. Az SqlPackage több környezetben is megtalálható, többek között windows-latest és ubuntu-22.04, de már nem szerepel alapértelmezetten a ubuntu-24.04 és a ubuntu-latest környezetekben. A futó képeken lévő képek frissítése az SqlPackage egyes kiadásaitól számított néhány héten belül történik.
Kezelt virtuális környezetben az SqlPackage-et a futtatási környezetben telepítené a pipelineban. A telepítés külön lépésként történik az Azure Pipelinesban és a GitHub Actionsben, és a telepítés során rövid késleltetést ad az egyes folyamatok futtatásához. Az SqlPackage futtatókörnyezetben való telepítéséhez adjon hozzá egy lépést ahhoz a folyamathoz, amely a dotnet CLI használatával telepíti az SqlPackage-t globális eszközként. Ezt a lépést a folyamat SqlPackage-műveletei előtt kell futtatni.
dotnet tool install --global Microsoft.SqlPackage
Előfordulhat, hogy az SqlPackage telepítése előtt el kell végeznie egy .NET-telepítési lépést a folyamatban, amelyet egy hibaüzenet jelez, amely szerint a .NET nem található. Konfiguráljon egy integrált műveletet, például az Azure Pipelines UseDotNet feladatát vagy a setup-dotnet műveletet a GitHub Actions-ben.
Igény szerint megadhatja az SqlPackage telepíteni kívánt verzióját a telepítési parancshoz fűzve --version <version> , vagy használhatja a --prerelease jelölőt egy előzetes verzió telepítéséhez.
Példa: Az SqlPackage telepítésének lépései az Azure DevOps Pipelinesban
Az Azure DevOps Pipelinesban a UseDotNet-feladattal telepítheti a .NET SDK-t, majd globális eszközként telepítheti az SqlPackage-t. Ha a Microsoft által biztosított Windows-ügynököt használ, az SqlPackage már telepítve van.C:\Program Files\Microsoft SQL Server\170\DAC\bin Ha saját üzemeltetésű ügynököt használ, telepítheti az SqlPackage-t a gazdakörnyezetben, így kihagyhatja ezt a lépést a folyamatban.
- task: UseDotNet@2
inputs:
packageType: 'sdk'
version: '8.x'
- script: dotnet tool install --global Microsoft.SqlPackage --version <version>
displayName: 'Install specific version of SqlPackage'
Példa: Az SqlPackage telepítésének lépései a GitHub Actionsben
A GitHub Actionsben a setup-dotnet művelet használatával telepítheti a .NET SDK-t, majd globális eszközként telepítheti az SqlPackage-t. Ha a GitHub által biztosított Windows-futót használ, az SqlPackage már telepítve van a C:\Program Files\Microsoft SQL Server\170\DAC\binrendszerben. Ha saját üzemeltetésű futót használ, telepítheti az SqlPackage-t a gazdakörnyezetre is, és kihagyhatja ezt a lépést a munkafolyamatban.
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.x'
- name: Install SqlPackage
run: dotnet tool install --global Microsoft.SqlPackage --version <version>
Az SqlPackage verziójának ellenőrzése
A hibaelhárítás során fontos tudni, hogy az SqlPackage verzió használatban van. Ezeket az információkat úgy rögzítheti, hogy hozzáad egy lépést a folyamathoz az SqlPackage paraméterrel való /version futtatásához. Ebben a cikkben példákat talál az Azure DevOps és a GitHub által felügyelt környezetek alapján, a saját üzemeltetésű környezetek eltérő telepítési útvonalokkal rendelkezhetnek a munkakönyvtárhoz.
Azure Pipelines
Egy Azure Pipeline-ban a szkript kulcsszó az SqlPackage verziószámát adja vissza.
- script: SqlPackage /version
workingDirectory: 'C:\Program Files\Microsoft SQL Server\170\DAC\bin\'
displayName: 'get sqlpackage version'
GitHub Actions
Egy GitHub Action-munkafolyamatban a futtatási kulcsszó az SqlPackage verziószámát adja vissza.
- name: get sqlpackage version
working-directory: 'C:\Program Files\Microsoft SQL Server\170\DAC\bin\'
run: ./SqlPackage /version
GitHub-művelet kimenete, amely a 15.0.4897.1-es buildszámot mutatja
Az SqlPackage frissítése a folyamatügynökön
Bizonyos esetekben előfordulhat, hogy a folyamatkörnyezetben telepített SqlPackage jelenlegi verziója nem elegendő. Ha a környezet nem módosítható közvetlenül, egy további lépéssel telepítheti az SqlPackage újabb verzióját a folyamat futtatása során. Fontos, hogy a dacPac- vagy BacPac-műveletek futtatása előtt futtassa a telepítési lépést. Ez a feladat kombinálható egy lépéssel a verzió ellenőrzéséhez , hogy a frissítés a várt módon fejeződött-e be.
Azure Pipelines, Windows-alapú ügynök
Ha a PowerShell-feladatot egy Azure Pipeline-ban használják, egy lépés hozzáadható egy Azure Pipeline-hoz, amely letölti a kívánt DacFx-telepítőt, és csendesen telepíti azt.
- 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
GitHub Actions, Linux-alapú futóprogram
Egy GitHub Action-munkafolyamatban a futtatási kulcsszóval végrehajthatja a parancsokat az dotnet tool SqlPackage telepítéséhez, eltávolításához vagy frissítéséhez. Az alábbi példa bemutatja, hogyan frissítheti az SqlPackage-t a legújabb előzetes verzióra:
- name: Update SqlPackage
run: dotnet tool update --global Microsoft.SqlPackage --prerelease
Saját üzemeltetésű virtuális környezetek
Egy saját üzemeltetésű virtuális környezetben, például egy saját üzemeltetésű Azure DevOps-ügynökön vagy a GitHub Actions futóján telepítheti az SqlPackage-t a gazdakörnyezetre, vagy telepítheti az SqlPackage-t futtatókörnyezetben a felügyelt virtuális környezetekben leírtak szerint. Ha az SqlPackage-t a gazdagépkörnyezetre telepíti, az azon futó pipeline-oknak nem kell futásidőben telepíteniük az SqlPackage-t, ami felgyorsíthatja a pipeline futását. Ha az SqlPackage telepítve van a gazdagépen, rendszeresen frissítenie kell az SqlPackage-t , hogy a környezetet a legújabb verzióval tartsa karban.
Az Azure Container Apps-feladatok segítségével önkiszolgáló futókat helyezhet üzembe egy olyan tárolóban, amely szükség szerint van üzembe helyezve az egyes munkafolyamat-meghívásokhoz. A Container Apps-feladatok segítségével szabályozhatja a dockerfile-ban meghatározott környezetet, és szükség szerint telepítheti az SqlPackage-t és más eszközöket. A saját üzemeltetésű futó úgy konfigurálható, hogy az SqlPackage egy meghatározott verzióján fusson, az installációs lépés konténerképbe való belefoglalásával. Az oktatóanyag például tartalmaz egy Dockerfile-t, amely telepíti a curl és jq.
Ezt a példát módosíthatjuk úgy, hogy létrehozzuk a .NET 8.0-t és az SqlPackage-t telepítő tárolólemezképet:
FROM ghcr.io/actions/actions-runner:2.323.0
USER root
# install dotnet sdk and sqlpackage
RUN apt-get update && apt-get install -y dotnet-sdk-8.0 && \
dotnet tool install --tool-path /usr/local/bin/ Microsoft.SqlPackage
COPY entrypoint.sh ./entrypoint.sh
RUN chmod +x ./entrypoint.sh
USER runner
ENTRYPOINT ["./entrypoint.sh"]
A telepítések nyomon követése
Az SqlPackage-hez kapcsolódó fájlokat rögzítheti a folyamatok reprodukálásához és az üzembe helyezés nyomon követésének javításához. A megvalósítási és használati esetek az adott architektúrától és automatizálási környezettől függenek.
Dacpac-fájl
Diagnosztikai fájlkimenet bármely műveletből: Használja a paramétert
/DiagnosticsFile:bármely SqlPackage-művelethez. További információ: SqlPackage-diagnosztikák lekérése folyamatügynökbenKimenet a szkriptműveletből a közzétételi művelet előtt: Közzétételi művelet meghívása előtt használja a Script SqlPackage műveletet
SqlPackage-diagnosztika lekérése folyamatügynökben
Az SqlPackage diagnosztikai adatai a parancssorban érhetők el a paraméteren /DiagnosticsFilekeresztül, amely olyan virtuális környezetekben használható, mint az Azure Pipelines és a GitHub Actions. A diagnosztikai információk a munkakönyvtárban lévő fájlba lesznek írva. A fájl nevét a /DiagnosticsFile paraméter szabja meg.
Azure Pipelines
Ha hozzáadja a /DiagnosticsFile paramétert a "További SqlPackage argumentumok" mezőhöz az Azure Pipeline SqlAzureDacpacDeployment konfigurációjában, az SqlPackage diagnosztikai adatai a megadott fájlba lesznek írva. Az SqlAzureDacpacDeployment feladatot követően a diagnosztikai fájl a virtuális környezeten kívül is elérhető egy folyamatösszetevő közzétételével, ahogyan az az alábbi példában látható.
- 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'
A folyamat futtatása után a diagnosztikai fájl letölthető a futtatás összegzési oldaláról a "Közzétett összetevők" alatt.
GitHub Actions
Ha hozzáadja a /DiagnosticsFile paramétert az "argumentumok" mezőhöz a GitHub Action sql-action konfigurációjában, az SqlPackage diagnosztikai adatai a megadott fájlba lesznek írva. Az sql-action feladatot követően a diagnosztikai fájl a virtuális környezeten kívül is elérhetővé tehető az alábbi példában látható összetevő közzétételével.
- 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'