SP2-0734:未知命令开始选择
Posted
技术标签:
【中文标题】SP2-0734:未知命令开始选择【英文标题】:SP2-0734: unknown command beginning select 【发布时间】:2020-01-21 15:50:50 【问题描述】:我在 Azure DevOps 服务器 2019(前 TFS)上构建了持续的自动化应用程序部署。部署的一部分是检查 Oracle DB 状态,在运行脚本之前,下面的脚本工作了一年,并且(可能在最新的 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】:select
之前的空格让我觉得这是字符编码问题。参见例如this, this
beginning " select..."
我对 powershell 不够熟悉,不知道问题出在哪里。我可以想到一个解决方法,但它有点像 hack。
$chekdbsql = "`nselect status from v`$instance;"
这可以确保在字符串开头插入的任何垃圾字符都将在 SQL*Plus 中的自己的行上。因此,如果您获得 SP2-0734,您的选择命令仍将在此之后运行。因为它现在是一个双引号字符串,所以我转义了 $
。
【讨论】:
以上是关于SP2-0734:未知命令开始选择的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 CONCAT 解决 SQL Plus 中的 SP2-0734?
为啥sqlplus / as sysdba登陆oracle时报一串SP2-0734的错误,SP2-0734: unknown command beginning "
在sql plus 中,运行dbms_output.put时提示SP2-0734: unknown command beginning 请问是何缘故?