2013-08-05 1 views
0

연결된 서버와 함께 OPENQUERY를 사용하여 SQL Server에서 mysql으로 데이터를 가져 오려고합니다.SQL 서버가 데이터 값을 변환 할 수 없습니다.

나는 몇 개의 테이블을 가져 왔지만 긴 varchar 필드가있는 테이블에 문제가 있습니다.

매번 내가이

Msg 7344, Level 16, State 1, Line 2 
The OLE DB provider "MSDASQL" for linked server "Serv1" could not INSERT INTO table "[MSDASQL]" because of column "Notes". Could not convert the data value due to reasons other than sign mismatch or overflow. 

열이 MySQL의에서 SQL의 인 Servr 또한 VARCHAR (8000)의 유형 VARCHAR (8000)입니다 노트 다음 내가 얻을이 쿼리를 실행합니다.

무엇이 문제입니까? 왜이 오류를 내게주는거야? Notes varchar (8000)를 먼저 처리하려고 시도하지는 않았지만 작동하지 않았습니다.

INSERT OPENQUERY (Serv1, 'SELECT 
id, 
i3_identity, 
mid, 
Notes, 
Comments, 
result_code, 
Disposition, 
completed_on, 
calltype 
FROM finaltesting.activities') 
    SELECT 
    CAST(ID AS int) AS id, 
    CAST(identity AS int) AS identity, 
    CAST(merchantAccount AS varchar(255)) AS mid, 
    Notes, 
    CAST(Comments AS varchar(8000)) AS Comments, 
    CAST(FinishCode AS varchar(255)) AS result_code, 
    CAST(Disposition AS varchar(255)) AS Disposition, 
    CAST(callDate AS datetime) AS completed_on, 
    CAST(CallType AS varchar(255)) AS calltype 
FROM activities 

부호 불일치 또는 오버플로 이외의 이유로 인해 데이터 값을 변환 할 수 없습니다.

+0

어쩌면 어리석은 일일 수도 있지만 '선택'에서 'Creeate table'을 시도한 적이 있습니까? – jaczes

+0

은 SQL Server 또는 MySQL에 있습니까? – Jaylen

답변

0

MySQL의 열 유형을 varchar (8000)에서 Text로 변경하여이 문제를 해결할 수있었습니다. MySQL 5.6.12를 사용하고 있습니다. 양식 SQL Server를 MySQL Server로 변환 할 때 아마도 열 유형 문제 일 수 있습니다.

감사합니다.

관련 문제