2010-10-05 7 views
2

J'essaye de faire une requête via ODBC à notre base de données ERP. Le guide de documentation suggère que nous utilisons OPENQUERY pour envoyer la requête.Obtenir une erreur de syntaxe en essayant d'utiliser OPENQUERY

Voici mon exemple requête

SELECT 
Q.Part_No, 
Q.[Description], 
Q.Part_Type 
FROM OPENQUERY 
(
LINKEDSERVER, 
' 
SELECT 
    P.Part_No, 
    P.[Description], 
    P.Part_Type 
FROM LINKEDSERVER...Part_V_Part AS P 
WHERE P.Part_No = ''2712768'' 
' 
) AS Q 

Lorsque je tente d'exécuter cette requête si je reçois l'erreur suivante

OLE DB provider "MSDASQL" for linked server "LINKEDSERVER" returned message "[LINKED][ODBC Plex ODBC Report Data Source driver][OpenAccess SDK SQL Engine]Syntax error in SQL statement. syntax error line 1 at or after token <LINKEDSERVER>.[0]". 
Msg 7321, Level 16, State 2, Line 1 
An error occurred while preparing the query " 
SELECT 
    P.Part_No, 
    P.[Description], 
    P.Part_Type 
FROM LINKEDSERVER...Part_V_Part AS P 
WHERE P.Part_No = '2712768' 
" for execution against OLE DB provider "MSDASQL" for linked server "LINKEDSERVER". 

Quelqu'un peut-il me aider? Je n'ai jamais utilisé OPENQUERY auparavant, mais je suis d'accord avec l'exemple tel qu'il est dans la documentation d'exemple.

Répondre

1

devrait être comme ceci

SELECT 
Q.Part_No, 
Q.[Description], 
Q.Part_Type 
FROM OPENQUERY 
(
LINKEDSERVER, 
' 
SELECT 
    P.Part_No, 
    P.[Description], 
    P.Part_Type 
FROM DatabaseName.SchemaName.Part_V_Part AS P 
WHERE P.Part_No = ''2712768'' 
' 
) AS Q 

Remplacez DatabaseName et SchemaName avec votre nom de base de données réelle et schemaname (probablement dbo)

Vous n'avez pas besoin le nom du serveur lié dans la requête

Jetez un oeil à Having Fun With OPENQUERY And Update,Delete And Insert Statements pour quelques exemples

+0

Parfait, merci. Je ne peux pas croire que c'était aussi simple que ça. –

Questions connexes