【问题标题】:Azure Devops - How to use a powershell command to run SQL ScriptsAzure Devops - 如何使用 powershell 命令运行 SQL 脚本
【发布时间】:2020-10-06 10:55:10
【问题描述】:

所以,我正在 azure Devops 中创建构建/部署管道。

我遇到的一个问题是,每次进行部署时我都需要运行一些 SQL 脚本。我正在尝试通过内联 Powershell 任务来做到这一点。

问题是本机 powershell 无法识别 Invoke-Sqlcmd。所以我不得不在同一个脚本上安装模块

我正在这样做

Install-Module -Name SqlServer -AllowClobber -Scope CurrentUser -Force

但是任何时候它试图运行它都会给我这个错误:

##[error]使用“2”参数调用“ShouldContinue”的异常:“Windows PowerShell 处于非交互模式。读取和提示功能不可用。”

【问题讨论】:

    标签: sql powershell azure-devops


    【解决方案1】:

    我试过了:

    steps:
    - task: PowerShell@2
      inputs:
        targetType: 'inline'
        script: 'Install-Module -Name SqlServer -Scope CurrentUser'
    
    - task: PowerShell@2
      inputs:
        targetType: 'inline'
        script: 'Install-Module -Name SqlServer -AllowClobber -Scope CurrentUser -Force'
    

    首先我得到了WARNING: User declined to install module (SqlServer),但第二次成功了。你能说明你在管道中是如何调用它的吗?

    【讨论】:

    • steps: - task: petergroenewegen.PeterGroenewegen-Xpirit-Vsts-Build-InlinePowershell.Xpirit-Vsts-Build-InlinePowershell.InlinePowershell@1 displayName: 'Inline Powershell' inputs: Script: | #Get Scripts Location Write-Host $(Agent.BuildDirectory) Set-Location $(Agent.BuildDirectory) Install-Module -Name SqlServer -AllowClobber -Scope CurrentUser -Force 之后脚本执行其 sql 运行操作
    【解决方案2】:

    上述错误是因为您的自托管代理正在服务模式下运行。我可以在配置为作为服务运行的自托管代理上重现相同的错误。

    当我在配置为交互运行的自托管代理上使用上述脚本运行我的管道时。一切正常。

    您可能需要重新安装自托管代理并将其配置为以交互方式运行。更多信息请查看here

    或者,您可以在您的代理机器上预先安装 SqlServer 模块。然后,您将能够在管道中使用 invoke-sqlcmd 命令。

    您还可以使用微软托管的代理来运行您的管道。 invoke-sqlcmd 命令在代理 windows-2019vs2017-win2016 中可用

    【讨论】:

      猜你喜欢
      • 2020-04-02
      • 2019-03-30
      • 1970-01-01
      • 2020-08-11
      • 1970-01-01
      • 2016-06-19
      • 2014-10-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多