Comment ajouter un serveur lié MySQL à SQL Server?

8

J'essaie d'ajouter un serveur lié sur SQL Server à MySQL Server.

Notez que SQL Server est installé sur une machine distincte avec un nom de domaine différent.

Le serveur SQL se trouve 10.0.1.1sur old_domain.com.

Le serveur MySQL est 10.0.1.2sur new_domain.com.

J'ai ajouté une source de données ODBC sur le serveur 10.0.1.1et testé la connexion sans problème signalé.

J'ai ensuite ouvert Microsoft SQL Server Management Studio et accédé à SQL SERVER > Server Object > Linked Servers.

Je suis arrivé à l'assistant pour ajouter un serveur lié et je l'ai configuré comme suit:

  1. Serveur lié: "MySQLNewServer"
  2. J'ai sélectionné "Autre source de données" Fournisseur "Microsoft OLE DB Provider pour ODBC" Nom du produit "Connexion à MySQL" Source de données "MySQL" le même nom à la source de données qui a été ajoutée à la première étape.
  3. Sous l'onglet sécurité, j'ai sélectionné "Être créé à l'aide de ce contexte de sécurité" et j'ai mis le nom d'utilisateur et le mot de passe SQL Server
  4. J'ai frappé "Ok"

Remarque: j'ai suivi les instructions sur ce lien http://dbperf.wordpress.com/2010/07/22/link-mysql-to-ms-sql-server2008/

Cependant, j'obtiens cette erreur:

Le fournisseur OLE DB "MSDASQL" pour le serveur lié "MySQLNewServer" a renvoyé le message "[MySQL] [Pilote ODBC 5.2 (w)] Impossible de se connecter au serveur MySQL sur 10.0.1.1 (10055) Erreur Microsoft SQL Server: 7303.

Quelqu'un peut-il me dire ce que je fais mal? Comment puis-je faire communiquer ces 2 serveurs?

Mike
la source

Réponses:

1

Nous avons un serveur lié sur SQL pointant vers un serveur MySQL. La création du serveur lié est une chose assez simple.

La partie délicate consiste à obtenir les autorisations triées du côté de MySQL.

Si la mémoire me convient, vous devez créer un compte local sur le serveur SQL et créer une connexion sur le serveur MySQL pour le nom complet de l'ordinateur sur lequel le serveur lié s'exécutera.

Sur le serveur SQL, j'ai un identifiant pour Sqltest. Ceci est un compte SQL

Sur les propriétés du serveur lié, j'ai "Sécurité"> Être fait en utilisant ce contexte de sécurité> Nom d'utilisateur et mot de passe de connexion MySQL

Sur la boîte MySQL, j'ai un identifiant pour [email protected]. C'est là que mon serveur lié a échoué pendant assez longtemps.

Adrian Sullivan
la source
1

Je crois que MySQL et MS-SQL devraient permettre les connexions à distance. Le rôle de l'ODBC est de créer un canal bidirectionnel en termes de transferts de données (même si pour envoyer un ACK pour la connexion au serveur lié) c'est-à-dire également de vérifier les connexions à distance du côté MS-SQL. assurez-vous que le port 3306 est autorisé à travers le pare-feu de 10.0.1.1.

Chagbert
la source
0

Je vais spéculer que ce n'est pas exactement quelque chose que vous faites mal, mais plutôt que Windows n'aura pas beaucoup de mal à vous dire quel est le problème réel.

Le nombre entre parenthèses (10055) est l'erreur système renvoyée lorsque le pilote ODBC a tenté de se connecter à MySQL.

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.

Pas terriblement utile. L'erreur 10055 est WSAENOBUFS, ce qui pourrait être un code plus utile à utiliser pour rechercher des informations sur la nature du problème, ou pourrait se révéler une distraction, un effet secondaire du problème réel.

La bonne nouvelle, s'il y a de bonnes nouvelles, est que je suis convaincu que vous pouvez au moins réduire votre dépannage de moitié et vous concentrer uniquement sur le côté SQL Server, car ce n'est pas une erreur que MySQL Server vous "retournerait". Ce que je veux dire, c'est que ce n'est pas un échec "lors de la connexion", c'est un échec pour vraiment commencer le processus de connexion. Vous n'êtes jamais connecté au serveur MySQL, vous devriez donc être en mesure d'exclure en toute sécurité les autorisations et autres configurations du serveur MySQL comme faisant partie du problème jusqu'à ce que vous ayez dépassé cette condition particulière qui vous empêche même d'essayer de relier.

Dans une autre question ici , le code d'erreur était le même, et le problème était une incapacité à se connecter à un serveur MySQL, bien que je pense que dans ce cas ce n'était pas un serveur lié mais juste une connexion client ordinaire, et l'ordinateur en question avait apparemment des problèmes de réseau.

L'autre code d'erreur, 7303, semble impliquer un problème d'autorisations côté SQL Server. Ici aussi . Désolé, je ne peux pas être plus précis avec les choses à essayer, mais peut-être que quelque chose ici vous permettra d'aller dans une direction utile.

Michael - sqlbot
la source
Je n'en suis pas trop sûr. À un moment donné, cela fonctionnait bien. mais je l'ai remarqué il y a quelques jours cassé. Depuis lors, j'ai désactivé la recherche DNS sur le serveur mysql. donc MySQL ne regardera que l'adresse IP. Mais cela ne devrait pas avoir d'importance car l'utilisateur que j'utilise pour me connecter à mysql est root @%. Je ne sais pas si l'ajout de "skip-name-resolver" à mysql a causé ce problème ou non, car j'ai toussé ce problème un moment après que ce changement ait eu lieu.
Mike