Fragensteller
SSIS Fehler bei Anzeige einer Tabelle/View aus einer MySQL Datenbank

Frage
-
Hallo,
ich habe eine SQL Server 2008 R2 Datenbank und möchte via SSIS Patete en Daten aus einer MySQL Datenbank Version 5.0.51a auslesen.
Dazu habe ich mir die sowohl die 3.5.1 als auch die 5.2 Treiber installiert.
Ich kann Verbindungen anlegen und in einem SSIS Paket einen ADO Net Connection Manager anlegen.
Wenn ich damit eine ADO Net Source anlege, werden mir dit Tabbellen und Views der MySQL Datenbank angezeigt.Beim Preview bekomme ich dann aber die folgende Fehlermeldung:
"Error as Tata Flow Task [Ado Net Source [76]]: Teh component "Ado NET Source (76) was unable to retrieve column information for the SQL command. The following error occurred: ERRER [42000]
[MySQL][ODBC 5.2(a) Driveer][mysqld-5.0.51a]You have an error in your SQL syntax; check the manual that correspondends to your MySQL server version for the right syntax near "'x_query'" at line 1
Additional information:
Pipeline component fas returned HRESULT error code 0xC02020FF from a method call.
(Microsoft.SqlServer.DTSPipelineWrap)"Hat jemand eine Idee wo das problem liegt und was ich tun kann?
Mein DB-Server läuft mit Windows 2003 Server.
Ich habe mittels ACCESS 2010 eine Verbindung zu der DB aufgemacht und kann die Tabellen und Views der MySQL DB sehen, verknüpfen und auslesen.
ES scheint also eine Problem vom SQL Server zu sein.
Grußcheapy
- Bearbeitet Cheaptrick_la Mittwoch, 16. Januar 2019 10:39
Alle Antworten
-
Hi,
poste bitte das exakte unv vollständige SQL Statement, dass hier abgesetzt werden soll.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport -
Hallo,
In SSIS verwendet man besser ODBC oder OleDB statt der .NET Provider, das ist performanter.
Enthält die Tabelle Feldnamen, die zu den reservierten Namen zählen? https://stackoverflow.com/questions/21509026/error-in-your-sql-syntax-check-the-manual-that-corresponds-to-your-mysql-server?rq=1
In dem Fall versuche es mit eine Abfrage statt direkt auf die Tabelle zu gehen.
Olaf Helper
[ Blog] [ Xing] [ MVP] -
Hallo Olaf,
wenn ich mit einer Data Flow Task arbeite, bekomme ich nur ADO und OLE DB angezeigt.
Wenn ich im Connection Manager eine OLE DB Connection üfr MYSQL anlegen will, bekomme ich den nötigen Treiber nicht angezeigt.Ich habe dann noch eine ODBC Connection angelegt und es mit einer Query versucht:
SELECT COUNT (*) FROM a_config;
Dürfte ja nicht zu kompliziert sein aber auch das funktioniert nicht:
[Execute SQL Task] Error: Executing the query "SELECT COUNT (*) FROM a_config;" failed with the following error: "[MySQL][ODBC 5.2(a) Driver][mysqld-5.0.51a]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*) FROM a_config' at line 1". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.
In dieser Tabelle sind keine reservierten Worte als Feldnamen. Nichtmal Leerzeichen in Feldnamen. Anstelle der Leerzeichen sind es Unterstriche. Das dürfte ja auch kein Porblem sein, oder?
- Bearbeitet Cheaptrick_la Mittwoch, 16. Januar 2019 12:45
-
- Bearbeitet Olaf HelperMVP Mittwoch, 16. Januar 2019 14:17
-
Hat leider auch nicht geholfen:
[Execute SQL Task] Error: Executing the query "SELECT COUNT (*) AS Anzahl FROM a_config;" failed with the following error: "[MySQL][ODBC 5.2(a) Driver][mysqld-5.0.51a]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*) AS Anzahl FROM a_config' at line 1". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.
-
Ggf. gibt es ähnliche Probleme wie hier:
https://www.sqlservercentral.com/Forums/390472/Unable-to-retrieve-Column-information-when-using-Ole-Db-Provider-for-sybase
Lösungen:
"For simple queries I've found that setting the AlwaysUseDefaulCodePage Custom Property of the OLE DB Source control to True overcomes this. ""SET FMTONLY OFF
SET NOCOUNT ON" -
Hat sich ja durch Deine Antwort schon geklärt.
Es ging um FMTONLY
Abe rnoch einmal grundsätzlich, der ich kann die Connection herstellen und sehe Tabellen und Abfragen in de MySQL DB aber sobald ich mir die Tabelleninhalte anzeigen will (Preview) kommt der genannte Fehler.
-
Ich kenne das auch von anderen Datenbanken, dass Native-SQL nicht immer funktioniert.
Die Alternative ist OPENQUERY:
https://docs.microsoft.com/de-de/sql/t-sql/functions/openquery-transact-sql?view=sql-server-2017select * from OPENQUERY(<Verbindungsserver>, 'Select * from MyTable')
Hier bekommt der SQL-Server dann fertige Resultsets und fragt nicht nach Microsoft-Tabellen (Systemtabellen,-Views) auf dem Quellserver, die da sowieso nicht existieren.
Vor allem ist man in dem SQL-String nicht an die SQL-Server-Syntax gebunden, sondern an die originäre Syntax des Quellservers.