2016-09-13 3 views
0

Я вызываю SQLPlus из powershell, и я пытаюсь показать пользователю сообщения об ошибках, если что-то пошло не так. Если проблем нет, сценарий должен просто продолжаться.Как сохранить только ошибки SQLPlus в файл (вызванный из powershell)

Это то, что я использую

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

Для SQLCMD мне удалось сделать это таким образом:

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> ошибки. txt записывает их в файл.

Я хочу что-то подобное для SQLPlus, если это возможно без использования золотника (сценариев, выполняемых 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 - это функции, объявленные мной.

 Смежные вопросы

  • Нет связанных вопросов^_^