-
SQL客户端:Ubuntu 14.04LTS
-
DB服务器:MS SQL Server 2005,通过odbc和Freetds访问。适用于我的另一台MS SQL 2005服务器。
-
isql 2.2.14
-
释放0.91
-
文本编辑器:windows 7的Notepad++6.5.5正在通过Samba共享在Ubuntu上编辑我的.sql文件。
-
不,我不能升级任何东西,我只能用现有的东西。
这把我难住了。我从I-net Clear Reports复制并粘贴了一条SQL语句,并将其粘贴到Windows编辑器中,该编辑器正在编辑一个Ubuntu.SQL文件,它只是一个文本文件。我已经通过isql和Perl连接到另一台MS SQL 2005服务器,没有问题。因此,我遇到了一个包含大约10个连接的大型SQL语句的问题,并将该语句简化为以下多行:
SELECT PKG.SO_ID
FROM
PACKAGES AS PKG
WHERE
PKG.tracking_no = '640038823199'
;
此文件由多行组成,以unix结尾。我的isql命令是:
cat test1.sql | isql dsnname 'domain\username' password -v -b
.
我使用-b作为批处理模式,因为我通过文件向isql发送输入。
错误从第一行立即开始,但我仔细检查了语法,对于SQL Server 2005,在“PACKAGES AS PKG”中,“AS”是可选的。
[37000][unixODBC][FreeTDS][SQL Server]Statement(s) could not be prepared.
[37000][unixODBC][FreeTDS][SQL Server]The multi-part identifier "PKG.SO_ID" could not be bound.
[ISQL]ERROR: Could not SQLExecute
[37000][unixODBC][FreeTDS][SQL Server]Incorrect syntax near the keyword 'FROM'.
[37000][unixODBC][FreeTDS][SQL Server]Statement(s) could not be prepared.
[ISQL]ERROR: Could not SQLExecute
[37000][unixODBC][FreeTDS][SQL Server]Incorrect syntax near the keyword 'AS'.
[37000][unixODBC][FreeTDS][SQL Server]Statement(s) could not be prepared.
[ISQL]ERROR: Could not SQLExecute
[37000][unixODBC][FreeTDS][SQL Server]Incorrect syntax near the keyword 'WHERE'.
[37000][unixODBC][FreeTDS][SQL Server]Statement(s) could not be prepared.
[ISQL]ERROR: Could not SQLExecute
[37000][unixODBC][FreeTDS][SQL Server]Incorrect syntax near '='.
[37000][unixODBC][FreeTDS][SQL Server]Statement(s) could not be prepared.
[ISQL]ERROR: Could not SQLExecute
-
这里到底发生了什么?
-
isql或MS SQL是否可能在test1.SQL文件中的制表符有问题?之前有一个选项卡
PKG.tracking_no
.
-
我假设.sql文件只是一个包含sql语句的文本文件,跨越一行或多行。
非常感谢。