2016-09-13 2 views
0

나는 powershell에서 SQLPlus를 호출하고 있는데 문제가 발생하면 오류 메시지를 표시하려고합니다. 문제가 없으면 스크립트를 계속 진행해야합니다.SQLPlus 오류 만 파일에 저장하는 방법 (powershell에서 호출 됨)

sqlcmd -S $serverLower -U $user -P $user -d $user -i $file -r1 2>errors.txt 1>$null 
if (CheckIfFileExistsAndNotEmpty errors.txt) 
    { 
    get-content errors.txt | write-host 
    } 

하나 개가 출력에 오류를 설정 -r 옵션, 2> 오류 :

이 내가 이런 식으로 할 관리 SQLCMD를 들어

sqlplus -S $user/[email protected]$server @$file 

을 사용하는 것입니다. txt는 파일에 기록합니다.

나는 사용자가 정의하고 내가 그들을 변경하지 마십시오 만약 내가 그것을 좋아하는 것 (SQLPLUS에 의해 실행되는 스크립트를 SPOOL을 사용하지 않고 SQLPLUS에 대한 비슷한, 가능하면된다 원하는

답변

0

대답 내가 찾은 자신 :.

AddAsFirstLine $file "SPOOL $errorfilepath" 
    Add-Content -Path $file -Value "SPOOL off" 
    sqlplus -S $user/[email protected]$server @$file 1>$null 

    $errors = Select-String -Path $errorfilepath -Pattern "(SP2|ORA|Msg.*Level.*State.*Server.*Line|SQLConverter-Error:|Init-Error:|Invalid.filename)" 
    Set-Content -Path errors.txt $errors 
    Remove-Item $errorfilepath -Force | Out-Null 
    } 

    if (CheckIfFileExistsAndNotEmpty errors.txt) 
    { 
     Write-Host "Error while executing script" 
     get-content errors.txt | write-host 
    } 

AddAsFirstLine 및 CheckIfFileExistsAndNotEmpty는 나를 선언 한 함수입니다.