2013-05-22 4 views
1

J'ai un SQL Server 2012. (120.120.55.15)SELECT * FROM serveur MySQL lié

Aujourd'hui, je lié au serveur MySQL (120.120.55.30) à mon SQLServer et lui a donné un nom "MYSQL".

Dans l'Explorateur d'objets, tout semble bien. Je peux voir base de données du serveur MySQL "exempleDataBase" et des tables dans celui-ci.

Mais lorsque je tente de lancer requête de sélection comme ceci:

SELECT * 
FROM openquery 
     (
     MYSQL, 
     ' 
     SELECT * 
     FROM [exampleDataBase].[msProcMatrix] 
     ' 
     ) 

Je reçois une erreur:

Msg 7399, niveau 16, état 1, ligne 1 Le fournisseur OLE DB « MSDASQL "pour serveur lié" MYSQL "a signalé une erreur. Le fournisseur n'a pas donné d'informations sur l'erreur . Msg 7350, niveau 16, état 2, ligne 1 Impossible d'obtenir les informations de colonne du fournisseur OLE DB "MSDASQL" pour serveur lié "MYSQL".

Que devrait-on faire de plus pour utiliser mon serveur MySQL lié?

Répondre

7

a retenu la décision:

SELECT * 
FROM openquery(MYSQL, 'SELECT * FROM exampleDataBase.msProcMatrix') 

Sans crochets!

étrange pour moi, mais fonctionne ...

+1

C'est le bon moyen d'échapper les noms de colonnes dans MySQL (PAS MSSQL!) Voir: http://stackoverflow.com/a/2889884/244067 – Filip

1

Vous pourriez avoir besoin d'un nom de schéma entre le nom de la base de données et le nom de la table.

SELECT * 
FROM openquery 
     (
     MYSQL, 
     ' 
     SELECT * 
     FROM [exampleDataBase].**[dbo]**.[msProcMatrix] 
     ' 
     ) 
+0

Mariau, trouver ma réponse ci-dessous. – Almazini

3

Cela a très bien fonctionné pour moi après avoir combattu le même problème sur MS SQL Server 2008 64 bits en utilisant le MY SQL 3.51 64 bits pilote ODBC

SELECT * 
FROM OPENQUERY 
(
    linked_server_name, 
    'SELECT * FROM linked_database_name.linked_table_name' 
) 
1

Lorsque Je travaille avec un serveur lié, je n'utilise jamais Select * From.

Essayez avec Select Column1, Column2, ... ColumnN From.

Fonctionne toujours bien pour moi.

0

Si le catalogue par défaut ("exampleDataBase") est configuré dans ODBC, ce qui suit fonctionnera aussi bien:

select * from MYSQL ... msProcMatrix