处理PowerShell脚本中的SQL错误/异常

时间:2014-10-14 20:45:17

标签: sql powershell

我试图使用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
}

1 个答案:

答案 0 :(得分:0)

除非在Powershell / .Net端产生异常,否则异常处理程序不会处理它。一个例子是无法连接到Sql Server。对于TSQL代码中的任何错误,错误处理在Sql Server中完成。

您可以在TSQL中使用try...catch。还有更多文章,例如Using TRY...CATCH in Transact-SQL和SO questions