Eu tenho uma conexão de servidor vinculada para um postgresql
arquivo sql server
. Posso executar isso no Sql Server Select * from OpenQuery(LinkedServer,'Select * from alphadawg')
e isso retorna todos os resultados, mas no segundo que tento adicionar qualquer função, começo a receber erros. Por exemplo, se eu quisesse TRIM()
os espaços à direita de um campo
Select * from OPENQUERY(LinkedServer,
'Select TRIM(trailing ' ' from ad.userid) As "User ID"
FROM alphadawg ad')
eu recebo um erro de
Msg 102, Level 15, State 1, Line 5
Sintaxe incorreta próxima a ' from ad.userid) As "User ID"
Ok, talvez o problema seja que estou tentando executar o postgresql no Sql Server, então alterei a sintaxe para
Select * from OPENQUERY(LinkedServer,
'Select RTRIM(ad.userid) As "User ID"
FROM alphadawg ad')
Mas isso gerou um erro de:
O provedor OLE DB "MSDASQL" para o servidor vinculado "LinkedServer" retornou a mensagem "A conversão solicitada não é suportada".
Como você pode usar a TRIM()
função com uma conexão de servidor vinculada entre o postgresql e o SQL Server?
As aspas devem ter escape no
OPENQUERY
argumento.O tipo de retorno para a
TRIM
função étext
, portanto, você deve convertê-lo de volta para varchar.OU
Não tenho um ambiente de teste, mas ficaria surpreso se o seguinte não funcionasse ...
OPENQUERY executa determinada consulta no servidor remoto para recuperar os dados solicitados. Então você pode no SQL Server se quiser, assim como no PostgreSQL.
Para aparar no PostgreSQL, sua sintaxe está incorreta. Deveria ser.
Para aparar no SQL Server, o TRIM é dividido em LTRIM (aparar à esquerda) e RTRIM (aparar à direita). Então você deve usar a consulta abaixo
Obrigado