SP2-0734: неизвестный выбор начала команды - PullRequest
1 голос
/ 20 сентября 2019

У меня непрерывное автоматизированное развертывание приложений на сервере Azure DevOps 2019 (например, TFS).Часть развертывания - проверка состояния базы данных Oracle, перед запуском сценариев приведенный ниже сценарий работает в течение года, а один (вероятно, после последнего обновления сервера Azure DevOps 2019.1) перестает работать с ошибкой:

SQL> SP2-0734: unknown command beginning " select..." - rest of line ignored. 
SQL> SP2-0734: unknown command beginning " select..." - rest of line ignored. 
$chekdbsql = 'select status from v$instance;'
$i = 1
$chkdb = ""
while ($chkdb.Contains("OPEN") -ne 'True') { 
    Clear-Variable -Name chkdb
    $chkdb = ($chekdbsql | cmd /c "sqlplus -s user/password@localhost/ora as sysdba")
    if ($chkdb.Contains("OPEN") -eq 'True'){
        break 
        }
    echo "Trying to connect to database. Attempt $i"
    sleep 10
    $i++ } 
write-host "Connected! Database's status is 'open'." -ForegroundColor green

Если я попытался выполнить команду локально на компьютере, на котором построено приложение, - это работает хорошо.

1 Ответ

1 голос
/ 20 сентября 2019

Пробел перед select заставляет меня думать, что это проблема кодировки символов.См. Например this , this

beginning " select..."

Я недостаточно знаком с powershell, чтобы понять, в чем проблема.Я могу придумать обходной путь, но это своего рода хак.

$chekdbsql = "`nselect status from v`$instance;"

Это гарантирует, что любые символы мусора, вставляемые в начало строки, будут находиться на отдельной строке в SQL * Plus.,Так что, если вы получите SP2-0734, ваша команда select все равно будет выполняться после этого.Поскольку теперь это строка в двойных кавычках, я избежал $.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...