2013-07-21 3 views
0

연결된 서버 설치를 통해 SQL Server 2008 R2에서 Pervasive SQL 백 엔드 (Sage ERP 시스템)의 데이터를 업데이트하려고합니다. 아래 세부 사항 및 오류 메시지가 반환되었습니다. kicker는 update 문이 매우 훌륭하고 비슷한 개발 상자에서 작동한다는 것입니다. 어떤 도움을 주시면 대단히 감사하겠습니다!SQL 링크 된 서버 업데이트 Openquery 구문 오류

환경 :

  • 윈도우 서버 2008 엔터프라이즈 (클라우드 서버, 랙 스페이스)
  • 마이크로 소프트 SQL 서버 2008 R2 (SP1) - 10.50.2500.0 (인텔 X86) 고급 서비스 Express Edition을 Windows에서 NT 6.1 (빌드 7601 : 서비스 팩 1) (WOW64) (하이퍼 바이저)
  • 세이지 팀버 ERP는 퍼베이시브 SQL의 10 절 백엔드 실행

설정 :
32 비트 Timberline 드라이버 (OBDC)를 사용하여 SQL Server 2008에 LINKED SERVER 설정이 있습니다. 연결된 서버가 다음 두 속성을 TRUE, "프로세스 허용"및 "비 트랜잭션 업데이트"로 설정 한 MSDASQL 공급자를 사용 중입니다

문제 :
아래 링크 된 서버에서 데이터를 가져올 수 있습니다. SSMS에서 연결된 서버를 통해 개체를 성공적으로 탐색 할 수 있습니다.

그러나 아래의 UPDATE 문은 다음 오류를 반환합니다.

UPDATE OPENQUERY(TLLINKSERVER, 'SELECT * FROM TABLE1 WHERE JOBID = ''00-00-111111''') 
SET DATEFIELD = '2013-07-15' 

오류 :

OLE DB provider "MSDASQL" for linked server "TLLINKSERVER" returned message "[Sage Timberline Office][Sage Timberline Office ODBC Driver]Syntax Error.". OLE DB provider "MSDASQL" for linked server "TLLINKSERVER" returned message "[Sage Timberline Office][Sage Timberline Office ODBC Driver]UPDATE "\SERVER1\Company Data\DATA\COMPANY1\"<< ??? >>."TABLE1" SET "DATEFIELD1"=? WHERE "JOBID"=? AND "DATEFIELD1"=?".
Msg 7343, Level 16, State 4, Line 1
The OLE DB provider "MSDASQL" for linked server "TLLINKSERVER" could not UPDATE table "[MSDASQL]".

+0

"매우 유사한"설정 - 어떻게 동일하지 않은지 열거 할 수 있습니까? –

답변

1

왜 일을 더 쉽게하지? Pervasive PSQL은 연결된 서버를 통한 직접 업데이트를 지원하지 않습니까?

UPDATE TLLINKSERVER...TABLE1 
    SET DATEFIELD = '2013-07-15' 
    WHERE JOBID = '00-00-111111'; 

아니면 :

SELECT * FROM OPENQUERY(TLLINKSERVER, 'UPDATE TABLE1 
    SET DATEFIELD = ''2013-07-15'' 
    WHERE JOBID = ''00-00-111111''); 

사용중인 UPDATE OPENQUERY 구문이 SQL Server에 연결된 서버 (Linked Server)에 대한 지원되지만, 나는 그와 같은 다른 플랫폼에 대한 사실 잘 모르겠어요 PervasiveSQL ...

1

이것은 SSMS에서 테이블 죄수 Oracle을 업데이트하는 방법입니다.

이 경우 연결된 서버 이름은 MyLinkedServer입니다. STATE 다음 (KY,OH,NY,PA,VA,DC) 중 하나입니다

나는 [email protected]에 열 CONTACT_EMAIL를 업데이트하고 있습니다 :

UPDATE L 
SET L.CONTACT_EMAIL ='[email protected]' 
FROM OPENQUERY(MyLinkedServer, 'SELECT * from MyTable')L 
WHERE L.STATE IN('KY','OH', 'NY','PA','VA','DC') 

OPENQUERY 방법은 완벽하게 작동합니다.