提问人:Lucas 提问时间:9/26/2023 更新时间:9/26/2023 访问量:63
sqlcmd.exe 在本地工作,但不能通过 Azure 管道工作
sqlcmd.exe works locally but not through azure pipelines
问:
我正在尝试在 azure pipelines 中运行一个旧脚本,该脚本很旧,但在本地运行时效果很好。但是,当我通过 Azure Pipelines 执行脚本时,它会返回错误。
运行自承载代理的环境是具有 PowerShell 5.1 的 Windows Server 2012 R2 设备。为了简单起见,我已将大部分代码简化为更小的版本,以便于复制。
原始格式
当地:Works - 管道:失败
$sql = "SELECT @@Version"
$sql | sqlcmd -S $server -U $username -P $env:PASSWORD_ENV -l 30 -d "master" -I -b -h -1 -W -j 2>&1
参数格式
当地:作品 - 管道:作品
$sql = "SELECT @@Version"
sqlcmd -Q $sql -S $server -U $username -P $env:PASSWORD_ENV -l 30 -d "master" -I -b -h -1 -W -j 2>&1
此命令输出的错误是
消息 2812,级别 16,状态 62,第 1 行 [Microsoft][适用于 SQL Server 的 ODBC 驱动程序 13][SQL 服务器]找不到存储过程 master.dbo.选择”。
现在有人可能会说,
好吧,只需更新脚本以使用参数方法即可!
这是一个有效的论点,尽管这些脚本很旧,而且不仅仅是这个命令遇到了问题。在管道中运行时存在某种环境问题,导致更广泛的问题。如果我安装最新版本的 PowerShell 并选中该命令的框,则它在其他地方会失败,因为脚本使用 WMI 的命令,该命令在更高版本中已替换为 Get-CIMInstance。但同样......所有原始脚本在本地运行时都可以正常工作,而不会出现问题。pwsh
环境
- SQLCMD(本地):13.0.1601.5
- SQLCMD(管道):13.0.1601.5
- PSVersion(本地):5.1.14409.1005
- PSVersion(管道):5.1.14409.1005
答: 暂无答案
评论