MySQL Datenbank mit MSSQL Datenbank abgleichen

3a5y2k

Neuer Benutzer
Beiträge
4
Hi ich sitze jetzt schon eine Weile an dem Thema und irgend wie komme ich nicht weiter.

Also Grundsätzlich soll eine InHouse MS-SQL DB, bestimmte Tabellen mit einer externen MySQL DB abgleichen. Das soll dafür dienen um den Grundbestand von Daten in die MySQL Datenbank einzupflegen, falls das System neu aufgesetzt werden wenn der Datenbestand vlt kompromittiert ist(einzelene überprüfung zu aufwändig). Danach sollen die Daten per Trigger oder anderen Scripten überwacht werden, bisher keine kongretten Ideen.

Dafür habe ich den MySQL Server als LinkedServer eingerichtet und möchte per OPENQUERY meine Querys auf der MySQL DB ausführen. Leider scheitere ich immer wieder daran das ich nicht verstehe wie ich richtig Werte von Variablen in einem Query quoten muss.
[SQL] Tableinformation from MySQL - Pastebin.com

Ich habe das Thema/Scripte schon ein paar mal weg gelegt aber ich komme auf keinen grünen Zweig.

Daher meine Frage(n):
1. Ist das sinnvoll/machbar die Daten so zu verschieben/kopieren ?
Wenn nein wie sonst, habe schon ein PHP Script geschrieben aber schien mir auch nicht die wahre Lösung.
In dem Thema Datenmigration komplett umbelegt außer Das was ich bisher mit kleinen Datenmengen für meine Projekte brauchte. Da auch Bilder mit in der Datenbank enthalten sind, und so weiter. Hat da einer Erfahrungen?

2. Warum bekomme ich keinen Fehler wenn der Tabellenname oder andere Inhalte doppelt gequotet ist
aber wenn ich ihn so wie ich es erwarten würde einfach gequotet, einen Fehler.
Ausgabe des erzeugten Query ohne Fehler:
SELECT * FROM OPENQUERY( MYSQL , 'SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = ''ADR_STAMM'' AND table_schema = ''pps_tmp''
')
 
Werbung:
Ich habe bisher nur zwischen MS Servern mit linked Servern gearbeitet. Ich weiß auch nicht ob MSSQL überhaupt in MySQL schreiben kann aber ich ging bisher immer davon aus das die Syntax für einen Select der aus MSSQL entspricht. Auch müsste bei einem vorhandenen Linked Server kein OPENQUERY verwendet werden, probier mal:
Code:
SELECT * FROM [LinkedServerName].[Datenbank].[ggf.Schema].[Tabelle]
 
Also hab den Query von dir probiert, ich habe aber keine Ahnung wie das
heisen soll(alles durch probiert).

Habe aber noch mal meine LINKEDSERVER Einbindung geändert und einen CATALOG="cat_pps" vergeben
da ich immer die Meldung bekam:
"Invalid use of schema or catalog for OLE DB provider "MSDASQL" for linked server "MYSQL". A four-part name was supplied, but the provider does not expose the necessary interfaces to use a catalog or schema."

laut der Anleitung: Creating a linked server ´MySQL to MSSQL´(query the MySQL database without openquery function) | The Buttonfactory ,
alles bis auf die Einstellungen "dynamic parameter" und "allow inprocess" gemacht, da ich es gerade nicht finde die Eingestellt.
Eigene Umsetzung: LinkedServer.jpg
Mit Query:
"SELECT * FROM [MYSQL].[pps_tmp].[cat_pps].[adr_stamm]" oder
"SELECT * FROM [MYSQL].[pps_tmp].[cat_pps].[ADR_STAMM]"

ist das Schema oder der Katalog nicht bekannt. Und über den MS Server Manager ist per rechts klick auch kein Query möglich....
 

Anhänge

  • LinkedServer.jpg
    LinkedServer.jpg
    91 KB · Aufrufe: 0
Das Schema ganz weg zu lassen, also nur drei Blöcke, hast du auch probiert? Ich habe leider keinen MySQL, kann das daher nicht testen.
 
Werbung:
Hab jetzt noch mal Alles neu eingerichtet und alle Möglichkeiten durch gespielt...
->(ohne Schema/Katalog) die Meldung das das Objekt nicht bekannt ist,
->(mit Schema/katalog) die Fehlermeldung das ich einen falschen Catalog oder das falsche Schema verwende.

Die Einstellungen "dynamic parameter" und "allow inprocess" hab ich beim neu einrichten wieder gefunden, kann bloß leider die Einstellungen nicht ändern...
Habs auf mehren System als Admin und Inhaber der DB probiert, werde da weiter lesen. Auch wenn es laut der Anleitung nur eine Zusatzeinstellung ist und für den Zugriff über
SELECT * FROM [LinkedServerName].[Datenbank].[ggf.Schema].[Tabelle]
nicht unbedingt notwendig sein soll.

Ich trett auf der Stelle .... ;(

Danke fürs lesen für deine Antworten.
 
Zurück
Oben