1
我想使用SQL Server 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')
我認爲這是一個數據類型問題,但我怎麼能解決它?我怎樣才能提取我需要的數據?
感謝
您是否嘗試過這一點 - http://stackoverflow.com/questions/4215979/problem-with-select-in-mysql-through- odbc-from-microsoft-sql-server:「[在答案中] ...去MySQL服務器並將數據類型更改爲varchar(),保持原樣...例如,char(10)將其更改爲varchar (10)「。 – Question3CPO 2013-04-29 17:28:43
@ Question3CPO有效。但我不想將所有我的mysql列從char更改爲varchar!我的大部分表都是char而不是varchar我希望你能幫我完成這個問題,因爲我必須將mysql表保存爲char。謝謝 – Mike 2013-04-29 17:42:42
有沒有一種方法可以在該數據的MySQL上創建重複表,更改重複表上的數據類型,然後將其移至SQL Server,或者不允許?如果是這樣,則重複表可以是SQL Server的參考點,並且可以保留原始表的列類型。 – Question3CPO 2013-04-29 17:48:42