Obtendo erro de sintaxe ao tentar usar o OpenQuery
-
27-09-2019 - |
Pergunta
Estou tentando fazer uma consulta via ODBC no nosso banco de dados ERP. O guia de documentação sugere que usamos o OpenQuery para enviar a consulta.
Aqui está minha consulta de exemplo
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
Quando tento executar essa consulta, embora receba o seguinte erro
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".
Alguém pode me ajudar aqui? Eu nunca usei o OpenQuery antes, mas estou lidando com o exemplo reto como está na documentação de exemplo.
Solução
Deve ser assim
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
Substitua o nome do banco de dados e o nome do scheman pelo nome do banco de dados e schemaname (provavelmente DBO)
Você não precisa do nome do servidor vinculado dentro da consulta
Dar uma olhada em Divertir -se com o OpenQuery e Atualizar, Excluir e Inserir declarações Para alguns exemplos
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow