Ich habe einen MySQL-Server als ein Verbindungsserver in Microsoft SQL Server 2008. Für den Link verwende ich MySQL ODBC Connector Version 5.1.8. Beim Aufrufen von Abfragen unter Verwendung von OPENQUERY
(der einzige Weg, den ich beim Ausführen von Abfragen gefunden habe) treten Probleme auf. Einfache Abfragen wieProblem mit SELECT * in MySQL durch ODBC von Microsoft SQL Server
SELECT * FROM OPENQUERY(MYSQL, 'SHOW TABLES')
funktionieren gut. B.
SELECT * FROM OPENQUERY(MYSQL, 'SELECT nr FROM letter')
funktioniert auch gut, aber SELECT * -Syntax funktioniert nicht. Die Abfrage:
SELECT * FROM OPENQUERY(MYSQL, 'SELECT * FROM mytable')
löst einen Fehler:
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.
Wie kann ich die SELECT * Syntax Arbeit machen?
Hallo, Tarek. Vielen Dank für Ihre Antwort! Tatsächlich können die char() - Felder mit konstanter Länge ein Problem sein. Ich hatte Probleme mit Strings, die aus MySQL importiert wurden, wo sie scheinbar mit Nullen aufgefüllt würden. Ich kann das jetzt nicht überprüfen, werde aber heute oder morgen Ihre Lösung versuchen. Vielen Dank! –
Auf der anderen Seite, mit dem folgenden: exec ('Select * Von meiner Tabelle') AT MYSQL wird die Daten angezeigt, aber Sie können nicht die Ausgabe beitreten oder aus wählen, außer wenn Sie eine temporäre Tabelle erstellen und exportieren Ausgabe zu ihm. Aus diesem Grund bevorzuge ich persönlich Openquery. –
Ich habe gerade Ihre Lösung getestet und in der Tat konvertieren CHAR-Felder in VARCHAR macht den Fehler weg. Tausend Dank! –