Je lance une requête sur un serveur lié (IBM DB2). La raison pour laquelle je fais cela est qu'il faut beaucoup de temps pour exécuter une requête simple. ci-dessous sont les deux requêtes, le premier fonctionne avec succès la question est donc pas à la requêteImpossible d'exécuter openquery sur le serveur lié
select top 10 * from [AS400TS_LNK].[TEST].[AUPRDDBF].CONTACCT where actrno = '8971'
select * from openquery(AS400TS_LNK, 'select * from [TEST].[AUPRDDBF].CONTACCT where actrno = ''8971''')
et l'erreur que je reçois lors de l'exécution de la requête ouverte
fournisseur OLE DB « DB2OLEDB » pour le serveur lié "AS400TS_LNK" a renvoyé le message "Token * N n'était pas valide Jetons valides: * N SQLSTATE: 42601, SQLCODE: -104".
Msg 7321, Niveau 16, État 2, Ligne 1
Une erreur est survenue lors de la préparation de la requête "select * from [AS400TS_LNK]. [TEST]. [AUPRDDBF] .CONTACCT où actrno = '8971'" pour l'exécution contre le fournisseur OLE DB "DB2OLEDB" pour le serveur lié "AS400TS_LNK".
Juste une supposition sauvage, mais facile à tester. Essayez de supprimer les crochets de l'instruction 'openquery' ... – user1429080
Comme l'a mentionné @ user1429080, l'utilisation de crochets pour les guillemets est une chose SQL Server; envoyer un SQL standard au serveur distant, en utilisant des guillemets doubles pour les identifiants si nécessaire (ce qui n'est pas le cas ici de toute façon). – mustaccio