我试图使用powershell脚本捕获我的日志文件中的SQL查询执行结果中生成的异常。
但是我在下面使用的代码捕获了我的powershell脚本语法中的异常,而不是SQL返回的异常。
此外,我想在成功执行后记录我的SQL脚本的结果集。我怎样才能实现这个目标。
以下是我的PowerShell脚本
try
{
if($Windows_authentication.tostring() -eq "1"){
invoke-SqlCmd -inputfile $Script_path\script.SQL -serverinstance $Ser_name -database $Db_name -querytimeout 65535 }
else
{
invoke-SqlCmd -inputfile $Script_path\script.SQL -serverinstance $Ser_name -database $Db_name -username $Userid -password $Passwd -querytimeout 65535 }
Write-Host "script.SQL Completed execution"
}
Catch
{
$ErrorMsg = $_.Exception.Message
Out-File -InputObject "The error message is - $ErrorMsg" -Append -NoClobber -FilePath "$Script_path\log.txt"
while( $ErrorMsg.InnerException ) {
$ErrorMsg = $ErrorMsg.InnerException
write-output $ErrorMsg
Out-File -InputObject "The error message is - $ErrorMsg" -Append -NoClobber -FilePath "$Script_path\log.txt"
}
break
}
答案 0 :(得分:0)
除非在Powershell / .Net端产生异常,否则异常处理程序不会处理它。一个例子是无法连接到Sql Server。对于TSQL代码中的任何错误,错误处理在Sql Server中完成。
您可以在TSQL中使用try...catch
。还有更多文章,例如Using TRY...CATCH in Transact-SQL和SO questions。