Wie füge ich SQL Server einen MySQL-Verbindungsserver hinzu?

8

Ich versuche, MySQL Server einen Verbindungsserver auf SQL Server hinzuzufügen.

Beachten Sie, dass der SQL Server auf einem separaten Computer mit einem anderen Domänennamen installiert ist.

Der SQL Server befindet sich 10.0.1.1auf old_domain.com.

Der MySQL-Server befindet sich 10.0.1.2auf new_domain.com.

Ich habe eine ODBC-Datenquelle auf dem Server hinzugefügt 10.0.1.1und die Verbindung ohne gemeldete Probleme getestet.

Dann habe ich Microsoft SQL Server Management Studio geöffnet und zu navigiert SQL SERVER > Server Object > Linked Servers.

Ich habe den Assistenten zum Hinzufügen eines Verbindungsservers aufgerufen und ihn folgendermaßen konfiguriert:

  1. Verbindungsserver: "MySQLNewServer"
  2. Ich habe "Andere Datenquelle" Anbieter "Microsoft OLE DB-Anbieter für ODBC" Produktname "Verbindung zu MySQL" Datenquelle "MySQL" den gleichen Namen an der Datenquelle ausgewählt, die im ersten Schritt hinzugefügt wurde.
  3. Auf der Registerkarte Sicherheit habe ich "Mit diesem Sicherheitskontext erstellt" ausgewählt und den SQL Server-Benutzernamen und das SQL Server-Kennwort eingegeben
  4. Ich drücke "Ok"

Hinweis: Ich habe die Anweisungen auf diesem Link befolgt: http://dbperf.wordpress.com/2010/07/22/link-mysql-to-ms-sql-server2008/

Ich erhalte jedoch diesen Fehler:

OLE DB-Providor "MSDASQL" für Verbindungsserver "MySQLNewServer" hat die Meldung "[MySQL] [ODBC 5.2 (w) -Treiber] zurückgegeben. Es kann keine Verbindung zum MySQL-Server unter 10.0.1.1 (10055) hergestellt werden. Microsoft SQL Server-Fehler: 7303.

Kann mir bitte jemand sagen, was ich falsch mache? Wie kann ich diese 2 Server zur Kommunikation bringen?

Mike
quelle

Antworten:

1

Wir haben einen Verbindungsserver in SQL, der auf einen MySQL-Server verweist. Das Erstellen des Verbindungsservers ist ziemlich einfach.

Der schwierige Teil besteht darin, die Berechtigungen auf MySQL-Seite zu sortieren.

Wenn der Speicher mein Recht erfüllt, müssen Sie ein lokales Konto auf dem SQL-Server erstellen und auf dem MySQL-Server ein Login für den vollständigen Computernamen erstellen, auf dem der Verbindungsserver ausgeführt wird.

Auf dem SQL Server habe ich ein Login für Sqltest. Dies ist ein SQL-Konto

In den Eigenschaften des Verbindungsservers habe ich "Sicherheit"> Mit diesem Sicherheitskontext erstellt> MySQL-Login-Benutzername und -Kennwort

Auf der MySQL-Box habe ich ein Login für [email protected]. Hier ist mein Verbindungsserver ziemlich lange ausgefallen.

Adrian Sullivan
quelle
1

Ich glaube, dass sowohl MySQL als auch MS-SQL Remoteverbindungen zulassen sollten. Die Rolle des ODBC besteht darin, eine Pipe zu erstellen, die in Bezug auf Datenübertragungen bidirektional ist (auch wenn ein ACK für die Verbindungsserververbindung gesendet werden soll), dh auch Remote-Anmeldungen von der MS-SQL-Seite zu überprüfen. Stellen Sie sicher, dass Port 3306 durch die Firewall von 10.0.1.1 zugelassen ist.

Chagbert
quelle
0

Ich werde spekulieren, dass dies nicht genau etwas ist, was Sie falsch machen. Es ist eher so, als würde Windows keine großen Probleme damit haben, Ihnen das eigentliche Problem zu erklären.

Die Zahl in Klammern (10055) ist der Systemfehler, der zurückgegeben wurde, als der ODBC-Treiber versuchte, eine Verbindung zu MySQL herzustellen.

C:\>perror 10055
Win32 error code 10055: An operation on a socket could not be performed because
the system lacked sufficient buffer space or because a queue was full.

Nicht besonders hilfreich. Fehler 10055 ist WSAENOBUFSein nützlicherer Code für die Suche nach Einsichten in die Art des Problems oder kann sich als Ablenkung herausstellen, als Nebeneffekt des eigentlichen Problems.

Die gute Nachricht, wenn es gute Nachrichten gibt, ist, dass ich zuversichtlich bin, dass Sie Ihre Fehlerbehebung zumindest halbieren und sich nur auf die SQL Server-Seite konzentrieren können, da dies kein Fehler ist, den MySQL Server Ihnen "zurückgeben" würde. Was ich damit meine ist, dass dies kein Fehler "beim Verbinden" ist, sondern ein Fehler, wenn es überhaupt darum geht, mit dem Verbindungsprozess zu beginnen. Sie stellen niemals eine Verbindung zum MySQL Server her, daher sollten Sie in der Lage sein, Berechtigungen und andere Konfigurationen auf der MySQL Server-Seite als Teil des Problems sicher auszuschließen, bis Sie diese spezielle Bedingung überwunden haben, die Sie daran hindert, es überhaupt zu versuchen verbinden.

In einer anderen Frage war der Fehlercode derselbe, und das Problem war die Unfähigkeit, eine Verbindung zu einem MySQL-Server herzustellen, obwohl ich denke, dass es in diesem Fall kein Verbindungsserver war, sondern nur eine normale Client-Verbindung und der betreffende Computer hatte anscheinend Netzwerkprobleme.

Der andere Fehlercode 7303 scheint ein Berechtigungsproblem auf der SQL Server-Seite zu implizieren . Auch hier . Tut mir leid, ich kann nicht genauer sagen, was ich versuchen soll, aber vielleicht bringt dich etwas hier in eine nützliche Richtung.

Michael - sqlbot
quelle
Ich bin mir nicht sicher. Irgendwann funktionierte es gut. aber ich habe es vor ein paar Tagen kaputt bemerkt. Seitdem habe ich die DNS-Suche auf dem MySQL-Server deaktiviert. MySQL betrachtet also nur die IP-Adresse. Dies sollte jedoch keine Rolle spielen, da der Benutzer, mit dem ich eine Verbindung zu MySQL herstelle, root @% ist. Ich weiß nicht, ob das Hinzufügen von "Skip-Name-Resolution" zu MySQL dieses Problem verursacht hat oder nicht, da ich dieses Problem eine Weile nach dieser Änderung abgehustet habe.
Mike