我有一臺MySQL服務器作爲Microsoft SQL Server 2008中的鏈接服務器。對於鏈接,我使用MySQL ODBC連接器版本5.1.8。當使用OPENQUERY
(我發現執行查詢的唯一方式)調用查詢時,會發生問題。簡單的查詢,如從Microsoft SQL Server通過ODBC在MySQL中存在SELECT *問題
SELECT * FROM OPENQUERY(MYSQL, 'SHOW TABLES')
工作正常。個別列的選擇,例如,
SELECT * FROM OPENQUERY(MYSQL, 'SELECT nr FROM letter')
工作正常,但SELECT *語法不起作用。查詢:
SELECT * FROM OPENQUERY(MYSQL, 'SELECT * FROM mytable')
引發錯誤:
Msg 7347, Level 16, State 1, Line 6 OLE DB provider 'MSDASQL' for linked server 'MYSQL' returned data that does not match expected data length for column '[MSDASQL].let_nr'. The (maximum) expected data length is 40, while the returned data length is 0.
我怎樣才能讓SELECT *語法的工作?
嗨,Tarek。非常感謝您的回覆!事實上,恆定長度的char()字段可能是一個問題。我從MySQL導入的字符串遇到了麻煩,他們似乎用零填充。我現在無法檢查,但會在今天或明天嘗試您的解決方案。謝謝! – 2010-12-16 12:06:03
另一方面,使用以下命令:exec('Select * From mytable')AT MYSQL將獲得顯示的數據,但您將無法加入輸出或從中進行選擇,除非您創建臨時表並導出輸出到它。出於這個原因,我個人更喜歡openquery。 – 2010-12-16 14:19:26
我剛剛測試了您的解決方案,實際上將CHAR字段轉換爲VARCHAR會導致錯誤消失。太感謝了! – 2010-12-17 09:58:36