이것은 나를 어리둥절하게 만들었다. i-net Clear Reports에서 SQL 문을 복사하여 붙여 넣은 다음 텍스트 파일 인 Ubuntu .sql 파일을 편집하는 Windows 편집기에 붙여 넣었습니다. 이미 isql 및 Perl을 통해 문제없이 다른 MS SQL 2005 서버에 연결하고 있습니다. 그래서 약 10 개의 조인이있는 큰 SQL 문에 문제가 있었고 다음과 같은 여러 줄로 문을 단순화했습니다.
SELECT PKG.SO_ID
FROM
PACKAGES AS PKG
WHERE
PKG.tracking_no = '640038823199'
;
이 파일은 유닉스 줄로 끝나는 여러 줄로 구성됩니다. 내 isql 명령은 cat test1.sql | isql dsnname 'domain\username' password -v -b
.
파일을 통해 isql에 입력을 보내기 때문에 배치 모드로 -b를 사용했습니다. 오류는 첫 번째 줄에서 즉시 시작되지만 구문을 다시 확인했으며 SQL Server 2005의 경우 'AS'는 'PACKAGES AS PKG'에서 선택 사항입니다.
[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
PKG.tracking_no
.감사합니다.
기본적으로 isql은 각 줄을 자체 쿼리로 취급하므로 모든 줄을 한 줄에 병합해야합니다.
isql은 단순한 테스트 앱일 뿐이며 연결을 증명하고 쿼리를 실행하는 빠르고 간단한 방법 이상으로 설계되지 않았습니다.
이후의 isql 빌드에서 -n 옵션은 SQLPrepare를 호출하기 전에 세미콜론으로 끝나는 줄을 찾고 원하는 항목에 가까워집니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다