变量“备忘录”是在我的管道上定义的。我正在使用sqldacpacdeploymentonmachinegroup@0任务来部署DACPAC。
NB:在构建任务上,DACPAC成功创建了。
问题是如何用管道上的管道变量替换SQLCMD变量?
jobs:
- job: DeployDatabase
displayName: 'Deploy Red and Yellow Databases'
pool: '<pool>'
variables:
MemOptimizedPath: 'H:\SQLData\TestDatabaseMemoryOptimized'
steps:
- task: DownloadBuildArtifacts@1
inputs:
buildType: current
downloadType: single
artifactName: 'drop'
downloadPath: '$(Build.ArtifactStagingDirectory)'
- task: SqlDacpacDeploymentOnMachineGroup@0
displayName: 'Deploy Database'
inputs:
TaskType: dacpac
DacpacFile: '**/*.dacpac'
TargetMethod: connectionString
ConnectionString: '${{ variables.yellowConnectionString }}'
对于dacpac拾取变量,您需要使用语法
/v:<name>=<value>
SqlDacpacDeploymentOnMachineGroup@0
通过我是我以编程方式设置变量的方式:
variables:
SQLCMDARG_MemOptimizedPath: 'H:\SQLData\TestDatabaseMemoryOptimized'
steps:
- pwsh: |
$additionalArgs = "";
# Grab all variables that start with SQLCMDARG_
Get-ChildItem -Path Env:SQLCMDARG_* | ForEach-Object {
$name = $_.name.Replace("SQLCMDARG_", "") # trim off prefix
$value = $_.value
# append argument to temporary value
$additionalArgs += " /v:$name=$value"
}
# write args to a variable
Write-Host "##vso[task.setvariable name=SQLCMDARGS]$additionalArgs"
displayName: Dynamically build SQLCMD args
- task: SqlDacpacDeploymentOnMachineGroup@0
displayName: 'Deploy Database'
inputs:
TaskType: dacpac
DacpacFile: '**/*.dacpac'
TargetMethod: connectionString
ConnectionString: '${{ variables.yellowConnectionString }}'
AdditionalArguments: $(SQLCMDARGS) # include the args on the command-line