2013-04-29 1 views
1

SQL 서버 OPENQUERY 기능을 사용하여 MySQL 서버에서 데이터를 가져 오려고합니다. 내가 Thew 보낸 MySQL의 서버에있는 레코드를 계산하는 쿼리를 실행할 때 나는 값을 문제SQL 서버 openquery를 사용하여 MySql 서버에서 데이터를 가져 오기

-this query works and it return the total records found 
SELECT count(*) AS total FROM OPENQUERY(LinkedServer, 'SELECT * FROM mydb_name.users') 

을 얻을하지만

SELECT login_user FROM OPENQUERY(LinkedServer, 'SELECT * FROM mydb_name.users') 

을 할 때이 오류가

Msg 7347, Level 16, State 1, Line 1 
OLE DB provider 'MSDASQL' for linked server 'LinkedServer' returned data that does not match expected data length for column '[MSDASQL].login_user'. The (maximum) expected data length is 60, while the returned data length is 16. 

시도했지만 시도하지 못했습니다.

SELECT CONVERT(CHAR(60), login_user) AS name FROM OPENQUERY(LASWEB, 'SELECT * FROM mydb_name.users') 

데이터 유형 문제라고 가정하고 있지만 어떻게 할 수 있습니까? 필요한 데이터를 가져 오려면 어떻게해야합니까?

감사

+0

당신이 봤어 일 - http://stackoverflow.com/questions/4215979/problem-with-select-in-mysql-through- odbc-from-microsoft-sql-server : "[대답은 ...] MySQL 서버로 이동하여 varchar()로 데이터 유형을 변경하십시오. 예를 들어 char (10)은 varchar로 변경합니다. (10). " – Question3CPO

+0

@ Question3CPO 그렇습니다. 하지만 모든 내 MySQL 열을 Char에서 varchar로 변경하고 싶지 않습니다! 내 테이블의 대부분은 숯불과 varchar되지 않습니다 난 당신이 내가 숯불로 MySQL의 테이블을 유지해야합니다이 문제를 마무리 도움이 좋겠어. 감사합니다 – Mike

+0

거기에 해당 데이터의 MySQL에 중복 테이블을 만들 수있는 방법은 중복 테이블에서 데이터 형식을 변경하고 SQL Server로 이동하거나 허용되지 않는가? 그렇다면 중복 테이블은 SQL Server의 참조 지점이 될 수 있으며 원본 테이블의 열 유형을 유지할 수 있습니다. – Question3CPO

답변

2

캐스트과 같이 변수가

SELECT login_user FROM OPENQUERY(LASWEB, 'SELECT CAST(u.login_user AS CHAR) AS login_user FROM mydb_name.users AS u') 
관련 문제