powershell:invoke-sqlcmd在使用-InputFile而不是-Query时捕获错误

时间:2011-10-13 04:57:29

标签: sql powershell error-handling

我有一个powershell脚本,它从给定的文件夹执行sql脚本。这是有效的,但如果出现错误,我没有看到错误的原因。在某些情况下,当powershell本身抛出错误时,会显示错误。但是当它是一个更简单的故障,例如主键冲突时,不会显示错误。

我已经尝试过以下方法,但是在使用“-InputFile”参数时这不起作用。用“-Query”参数替换它,将显示错误。

try 
{
    sqlps Invoke-Sqlcmd -ServerInstance "$dbInstance" -Database "$dbName" -InputFile "$updateScriptsFolder\$updateSql" -username $username -password $password -ErrorAction 'Stop' -Verbose -OutputSqlErrors 1
}
catch
{
    Write-Host "Error while executing $updateScriptsFolder\$updateSql" -foregroundcolor red
    Write-Host $error -foregroundcolor red
}

现在唯一的解决方案是将错误处理添加到每个sql脚本中。但是开发人员很可能忘记将错误处理添加到他们的脚本中。我想要一个更一般的错误处理。有人可以帮忙吗?

谢谢, 迈克尔

1 个答案:

答案 0 :(得分:1)

根据上面的注释,将文件读入字符串变量并将该变量用作-query参数的值。