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
?
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"
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 !!!
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.
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')
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