MySQL Server auf MSSQL linken
Umlüx 16.01.2014 - 09:57 6858 21
Umlüx
Huge Metal Fan
|
Folgendes Problem: Ich hab hier einen MSSQL 2008 R2 Server und möchte dort einen MySQL (4.1.7) reinlinken um später eine Tabelle vom MSSQL nach MySQL zu synchronisieren. Leider komm ich nicht wirklich zurecht. 1. Schritt MySQL Connector am MSSQL installiert und eine System-DSN einrichten. Die funktioniert auch, der Test ist erfolgreich. 2.Schritt Verbindungsserver am MSSQL einrichten. Die Verbindungsinformationen hab ich natürlich auch hinterlegt. Der MySQL Server wird nun in der Baumstruktur angezeigt und ich kann mich auch durch die Datenbanken und Tabellen klicken. Nur seh ich keine Daten.. Eine Abfrage bringt nur folgendes zu tage: [DBVA].[WebPortal]..[SpringerINFX2] enthält keine Spalten, die ausgewählt werden können, oder der aktuelle Benutzer hat keine Berechtigungen für dieses Objekt. Natürlich ist die Tabelle voll. und der User hat auch vollen Zugriff drauf. Auch remote, ich kann mit den Tabellen bequem von einer anderen Maschine mit PHPMyAdmin aus arbeiten. Woran könnte es sonst noch liegen? EDIT: ein simples Select * bringt noch folgende meldung: Meldung 7399, Ebene 16, Status 1, Zeile 2 Der OLE DB-Anbieter 'MSDASQL' für den Verbindungsserver 'DBVA' hat einen Fehler gemeldet. Der Anbieter hat keine Informationen zu dem Fehler bereitgestellt. Meldung 7312, Ebene 16, Status 1, Zeile 2 Ungültige Verwendung des Schemas oder Katalogs für den OLE DB-Anbieter 'MSDASQL' für den Verbindungsserver 'DBVA'. Ein vierteiliger Name wurde bereitgestellt, der Anbieter macht jedoch die Schnittstellen nicht verfügbar, die zum Verwenden eines Katalogs oder Schemas erforderlich sind. But my GoogleFu seems too weak.. EDIT2: oder sollte jemand eine andere/leichtere möglichkeit kennen, eine MSSQL Tabelle nach MySQL zu synchen.. bin offen für alles!
Bearbeitet von Umlüx am 16.01.2014, 10:10
|
mr.nice.
differential image maker
|
GoogleFu: This “four-part name” error is due to a limitation in the MySQL ODBC driver. You cannot switch catalogs/schemas using dotted notation. Instead, you will have to register another DSN and Linked Server for the different catalogs you want to access. Be sure and follow the three-dot notation noted in the example query. http://www.ideaexcursion.com/2009/0...erver-to-mysql/
|
Umlüx
Huge Metal Fan
|
|
Umlüx
Huge Metal Fan
|
irgendwie ist das alles nicht praktikabel.. vielleicht kann mir nochmal jemand helfen..
ich will (muss) täglich eine tabelle mit ca 1,5mio datensätzen von der MSSQL in eine MySQL tabelle kopieren. Die DBs befinden sich auf getrennten Servern.
Ich dachte am einfachsten wäre es, die MySQL ins MSSQL zu linken und dort einfach per Aufgabe alle datensätze zu kopieren. leider dauert das STUNDEN... ich kann kein truncate auf die MySQL absetzen und muss erst zeilenweise löschen. der Import danach dauert ebenfalls ewig. so lang ist mein Zeitfenster nicht.
momentan versuch ich gerade mit einem simplen powershell script die daten zu kopieren. dauert ebenfalls um die 1,5h.
manuell bin ich da noch schneller... (export der tabelle in eine csv und import über die MxSQL workbench)
wie würdet ihr das lösen?
|
Punisher
Bukanier
|
automatisierung der schnellsten lösung? gescriptet die daten exportieren und wieder importieren? mysql bietet da verschiedenste lösungen des exportierens (mysqldump etc). bei mssql weiß ich leider nicht ob du automatisiert importieren kannst
|
Umlüx
Huge Metal Fan
|
naja es sollte eh in die andere richtung. MS->My
|
Punisher
Bukanier
|
|
Obermotz
Fünfzylindernazi
|
|
Smut
takeover & ether
|
mit SSIS kannst den flat-file export/import automatisieren aus der MSSQL datenbank.
|
Umlüx
Huge Metal Fan
|
genau das mach ich momentan per powershell. export in ein csv, danach import ins MySQL. immer noch verdammt langsam... 2 stunden für 1mio datensätze
SSIS schau ich mir mal an. danke.
|
userohnenamen
leider kein name
|
interessant wär aber sicher mal was wie lange dauert? export 10 minuten und import 110 minuten, genau umgekehrt, jeweils 60 minuten, etc?
|
Smut
takeover & ether
|
SSIS wird nicht schneller sein, damit bildest du den workflow einfach sauber ab und hast error handling, scheduler etc.
|
bsox
Schwarze Socke
|
Die Frage von Uon ist berechtigt. Meine SQL skills sind 13+ Jahre verstaubt, aber gibt es nicht die Möglichkeit eines bulk imports? Sodass nicht bei jedem zeilenweisen import ein commit gemacht wird?
|
Umlüx
Huge Metal Fan
|
das ist die nächste sache.. eigentlich sollte man ein flatfile ja mit load data ins mysql importieren. das hab ich in verbindung mit PS aber noch nie erfolgreich geschafft.. ich lade das file momentan ins powershell und insert dann zeilenweise..
der export von 10k datensätzen aus der MSSQL dauert in etwa 40sek. der import ins MySQL dann ebenfalls.
direkt am MSSQL server ausgeführt ist der export etwas schneller, dafür der import in die MY langsamer.
|
XXXprod
I'm gonna be made!
|
Was beim herumschieben von vielen Daten ein Problem ist, ist mMn. das Transaction-Logfile. Probier mal die Daten in einer Schleife zu zB. 50k Datensätzen zu kopieren und nicht alle auf einmal. (Rede von der Direktverbindung) //Edit: Was auch zu beachten ist, ist das auf der Zieltabelle jegliche Indexes deaktiviert sind. Die Zieltabelle sollte ausserdem leer sein und keinerleir Constraints haben die sonst während dem Insert überprüft werden müssen. //Edit²: Es ist auch darauf zu achten, dass Quell und Zieltabelle möglichst identische Datentypen haben um unnötige Konvertierungen zu vermeiden. (Wird aber auf Grund unterschiedlicher DB-System ned ganz möglich sein) //Edit³: Hier sind noch ein paar nützliche Tipps zum Einfügen in MySQL Insert Speed
Bearbeitet von XXXprod am 23.01.2014, 11:15
|