我正在使用powershell脚本来运行一些* .sql文件。我可以使用下面的脚本获取输出值。
$return_value = sqlcmd -S ServerName -i "MyAwesome.sql" -v parameter1="par1"
问题是我必须提取输出文本以确定SQL文件中是否有任何错误。
有没有最佳做法来处理powershell文件和* .sql文件中的异常?
我是否必须捕获每个SQL文件中的错误以生成预定义的输出?
答案 0 :(得分:1)
答案 1 :(得分:0)
您可以使用sqlcmd
的退出代码来确定是否存在错误。
$output = sqlcmd -S ServerName -i "MyAwesome.sql" -v parameter1="par1"
if ($LASTEXITCODE -ne 0) {
Write-Error $output
}
如果退出代码不为0,您通常会在stdout
或stderr
中找到错误消息。您可以将两者放在输出变量中,如下所示:
$output = sqlcmd -S ServerName -i "MyAwesome.sql" -v parameter1="par1" 2>&1
如果stderr
中有任何内容,它将与stdout
中的任何内容合并。
在您的SQL脚本中,您还需要实现最佳实践错误处理技术,例如使用try / catch构造并在有保证的情况下使用事务。
http://msdn.microsoft.com/en-us/library/ms179296.aspx
如果在SQL脚本中捕获异常,则打印错误消息并设置返回代码,以便在PowerShell中处理错误。