В нашем репозитории git у нас есть папка под названием ExternalSQLScripts с подпапками для таблиц, представлений, функций, хранимых процедур и т. д. Прокрутите каждую подпапку и выполните все файлы .sql на внешнем SQL-сервере. У нас есть доступ только для развертывания сценариев объектов базы данных SQL Server, мы не можем выполнить развертывание базы данных .dacpac.
Когда я пытаюсь запустить свой конвейер, я сталкиваюсь с двумя проблемами:
1) (Get-Module was unexpected at this time. Cmd.exe exited with code '255'.
2) PublishBuildArtifacts task throws error and I had to exclude it from the pipeline.
В общем, какой подход будет лучшим для развертывания сценариев базы данных SQL Server.
ЯМЛ:
variables:
sqlServerConnection: $(System.ConnectionStrings.DatabaseConnectionString)
sqlScriptPath: $(Build.SourcesDirectory)/ExternalSQLScripts
steps:
- script: |
# Install SqlServer module
if (-!Test-Path (Get-Module -ListAvailable SqlServer)) {
Install-Module SqlServer -Scope CurrentUser -Force
}
Get-ChildItem -Path $sqlScriptPath -Filter "*.sql" -Recurse | ForEach-Object {
$scriptPath = $_.FullName
$scriptName = $_.BaseName
try {
Invoke-Sqlcmd -ServerInstance $sqlServerConnection -Database [System.DefaultWorkingDirectory] -InputFile $scriptPath
Write-Host "Successfully executed script: $scriptName"
} catch {
Write-Error "Error executing script: $scriptName - $($_.Exception.Message)"
}
}
- task: PublishBuildArtifacts@1
inputs:
pathToPublish: $(sqlScriptPath)
artifactName: sql-scripts





Этот шаг выполняется cmd.exe вместо PowerShell:
steps:
- script:
Проверьте эту ссылку: определение шагов.скрипта
Шаг сценария запускает сценарий с помощью cmd.exe в Windows и Bash в другие платформы.
Измените его на PowerShell@2.
Привет @paone! Есть ли у тебя возможность проверить ответ Шамрая ниже и использовать задачу
powershellвместо задачиscript? Поможет ли устранить ошибку в этом посте? Спасибо.