azure devops SQL部署用管道变量替换SQLCMD变量

问题描述 投票:0回答:1

变量“备忘录”是在我的管道上定义的。我正在使用sqldacpacdeploymentonmachinegroup@0任务来部署DACPAC。 NB:在构建任务上,DACPAC成功创建了。 问题是如何用管道上的管道变量替换SQLCMD变量? enter image description herejobs: - 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
通过
sql-server azure-devops azure-pipelines
1个回答
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
    

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.