web-dev-qa-db-fra.com

SELECT * FROM MySQL Linked Server utilisant SQL Server sans OpenQuery

J'essaie d'interroger un serveur lié MySQL à l'aide de SQL Server.

La requête ci-dessous fonctionne parfaitement.

SELECT * FROM OPENQUERY([Linked_Server], 'SELECT * FROM Table_Name')

Est-il possible d'exécuter la même requête sans utiliser l'appel OpenQuery?

9
Kevin

Trouvé la réponse ici. Maintenant, je peux la requête en notation à trois points. Merci

http://www.sparkalyn.com/2008/12/invalid-schema-error/

Accédez à l'écran d'options de fournisseur. Dans SQL Server 2005, vous pouvez voir la liste des fournisseurs dans un dossier situé au-dessus du serveur lié (en supposant que vous disposez des autorisations appropriées). Cliquez avec le bouton droit sur MSDASQL et accédez aux propriétés. Dans SQL Server 2000, le bouton des options du fournisseur se trouve dans la boîte de dialogue dans laquelle vous créez le serveur lié ..__ Cochez la case "Niveau zéro uniquement"

14
Kevin

vous pouvez utiliser la déclaration ci-dessous 

select * from [linkedServerName] ... [databaseName.TableName]

mais avant d’exécuter le code ci-dessus, vous devez faire quelques changements ..

dans SQL Server Management Studio, allez dans le dossier "Serveurs liés", ouvrez le dossier Fournisseurs, recherchez MSDASQL et obtient sa propriété puis cochez l'option "Niveau zéro uniquement" et appuyez sur Ok ... puis exécutez la requête ci-dessus et profitez-en !!!

5
vahid basirat

Vous devriez pouvoir simplement interroger directement le serveur lié.

select * from mylinkedserver.database.schema.mytable

MODIFIER:

Essayez avec la notation à trois points indiquée dans cet article: http://www.ideaexcursion.com/2009/02/25/howto-setup-sql-server-linked-server-to-mysql/

SELECT * FROM MYSQLAPP...tables

Msg 7399, niveau 16, état 1, ligne 1 Le fournisseur de base de données OLE "MSDASQL" pour Le serveur lié "MySQLApp" a signalé une erreur. Le prestataire n'a pas donné toute information sur l'erreur. Msg 7312, niveau 16, état 1, ligne 1 Utilisation non valide du schéma ou du catalogue pour le fournisseur de base de données OLE "MSDASQL" pour serveur lié "MySQLApp". Un nom en quatre parties a été fourni, mais le fournisseur n'expose pas les interfaces nécessaires pour utiliser un catalogue ou schéma. 

Cette erreur de «nom en quatre parties» est due à une limitation dans le Pilote MySQL ODBC. Vous ne pouvez pas changer de catalogue/schéma à l'aide de pointillé notation. Au lieu de cela, vous devrez enregistrer un autre DSN et Linked Serveur pour les différents catalogues auxquels vous souhaitez accéder. Soyez sûr et suivez la notation à trois points indiquée dans l'exemple de requête.

4
duffn

Essayez comme ça:

SELECT * FROM [Linked_Server]...[db_name.table_name]

Il fonctionne correctement, mais la conversion des types de données pose des problèmes ..___ Une utilisation plus sûre et plus fiable est OPEQUERY.

SELECT * FROM OPENQUERY([Linked_Server], 'SELECT * FROM db_name.table_name')
3
PST

Il y a un point important pour utiliser ceci:

SELECT * FROM [Linked_Server]...[db_name.table_name]

Tu dois continuer 

Serveur lié -> fournisseur-> MSDASQL:

et assurez-vous que ces trois options ont été cochées

  • Paramètre dynamique
  • Niveau zéro seulement
  • Autoriser le traitement

https://www.sqlteam.com/forums/topic.asp?TOPIC_ID=153024

0
sanaz amini