none
Ajuda Openquery RRS feed

  • Pergunta

  • Amigos.

     

    estou executando o mesmo openquery no Toad e funciona, porém quando o executo no Sqlserver não retorna valor algum.

     

     

    Code Snippet

    SELECT *

    FROM OPENQUERY(COBPRD01,

    'Select Account_ID

    From ICS_E_ACTION_LAUNCHER

    WHERE EXECUTION_DATE <= ''01-08-2008'' AND EXECUTION_DATE >= ''31-08-2008''

    Group By Account_ID')

     

     

    terça-feira, 23 de setembro de 2008 17:05

Respostas

  • Olá Daniel,

     

    Como está exatamente a sua query no SQL Server?

     

    No post anterior eu estava preocupado em te mostrar o erro de lógica, e deixei o formato da data antigo (dd/mm/yyyy). Que formato você está utilizando?

     

    Se utilizar yyyy-mm-dd, não resolve?

     

    Code Snippet

     

    WHERE EXECUTION_DATE >= '2008-08-01' AND EXECUTION_DATE <= '2008-08-31'

     

     

    Abraços,

    Caio Proiete




    Caio Proiete
    http://www.caioproiete.com
    quinta-feira, 25 de setembro de 2008 19:48

Todas as Respostas

  • Boa Tarde,

     

    Será que o formato dd-mm-yyyy não está omitindo registros ? Você poderia testar com outra consulta ?

     

    [ ]s,

     

    Gustavo

     

    terça-feira, 23 de setembro de 2008 17:11
  • Gustavo,

     

    consegui desta maneira.

     

    to_date(to_char(Acoes.EXECUTION_date, ''DD/MM/YYYY''), ''DD/MM/YYYY'') "DATA DE EXECUÇÃO"

     

    quarta-feira, 24 de setembro de 2008 18:58
  • Olá Daniel,

     

    Então foi só refazer a consulta que funcionou ? O problema era de fato a minha suspeita, ou seja, o formato esteva eliminando os registros ?

     

    [ ]s,

     

    Gustavo

     

    quarta-feira, 24 de setembro de 2008 19:04
  • Gustavo,

     

    desculpe não vi a sua resposta. Mas foi exatamente que eu fiz eu refiz a consulta. Porém agora estou com um problema quando executo no client do Oracle retorna o resultado, mas quando executo no Client do SqlServer não retorna valor algum.

     

    Saberia dizer o que pode está influênciando?

     

    quinta-feira, 25 de setembro de 2008 18:15
  • Olá Daniel,

     

    Além do formato da data que o Gustavo mencionou e que pode, com certeza, estar afetando os resultados, será que não existe um errinho de lógica na query?

     

    Code Snippet

     

    WHERE EXECUTION_DATE <= '01-08-2008' AND EXECUTION_DATE >= '31-08-2008'

     

     

    Como que a data pode ser menor que 01 de Agosto e, ao mesmo tempo, ser maior que 31 de Agosto?

     

    Abraços,
    Caio Proiete




    Caio Proiete
    http://www.caioproiete.com
    quinta-feira, 25 de setembro de 2008 18:28
  • Caio,

     

    A ideia é buscar entre 01/08/2008 e 31/08/2008. Como a data pode estar errada se no Oracle o resultado é exibido normalmente.

    quinta-feira, 25 de setembro de 2008 18:37
  • Olá Daniel,

     

    Estou sem SQL Server e Oracle neste momento, e não posso testar, mas logicamente, a condição está invertida:

     

    Code Snippet

     

    WHERE EXECUTION_DATE <= '01-08-2008' AND EXECUTION_DATE >= '31-08-2008'

     

     

     

    Deveria ser:

     

    Code Snippet

     

    WHERE EXECUTION_DATE >= '01-08-2008' AND EXECUTION_DATE <= '31-08-2008'

     

     

    Se você estivesse utilizando o operator BETWEEN, seria diferente... Mas na lógica, não faz sentido o primeiro.

     

    Abraços,

    Caio Proiete




    Caio Proiete
    http://www.caioproiete.com
    quinta-feira, 25 de setembro de 2008 19:01
  • Blz Caio,

     

    alterei o criterio, mas mesmo assim continuo retornando dados no Oracle e não retorno no Sql.

     

    quinta-feira, 25 de setembro de 2008 19:42
  • Olá Daniel,

     

    Como está exatamente a sua query no SQL Server?

     

    No post anterior eu estava preocupado em te mostrar o erro de lógica, e deixei o formato da data antigo (dd/mm/yyyy). Que formato você está utilizando?

     

    Se utilizar yyyy-mm-dd, não resolve?

     

    Code Snippet

     

    WHERE EXECUTION_DATE >= '2008-08-01' AND EXECUTION_DATE <= '2008-08-31'

     

     

    Abraços,

    Caio Proiete




    Caio Proiete
    http://www.caioproiete.com
    quinta-feira, 25 de setembro de 2008 19:48
  • Olá Daniel,

     

    Acho que a linha de ação do Caio é a mais correta (ele viu um erro de lógica que eu sequer havia percebido). Só que ainda não sabemos se há um erro na consulta, ou um erro no OPENQUERY, um erro de permissão e por aí vai...

     

    A grande (e possível) desconfiança é em torno do formato da data, mas acho que para termos certeza deveríamos testar uma consulta que não envolvesse esse formato. Se houver retorno, então o formato é o culpado. Tente fazer o seguinte:

     

    Coloque uma consulta genérica. Ex: SELECT SYSDATE FROM DUAL

    Coloque uma consulta sem filtros de data. Ex: WHERE ROWNUM = 1

     

    Se essas consultas retornarem poderemos avaliar outras possibilidades. Talvez o usuário do SQL Server esteja caindo em um outro banco, em outro esquema, etc.

     

    [ ]s,

     

    Gustavo

     

    quinta-feira, 25 de setembro de 2008 20:03
  • Tive retorno na primeira consulta:

     

    Code Snippet
    25-09-2008 17:21:14

     

     

     

    Segunda consulta retirando o criterio da data:

     

    Code Snippet
    2130347 2005-09-30 00:00:00.000 CALL 4ª Ligação de cobrança CANCEL_REQUEST

     

     

     

    quinta-feira, 25 de setembro de 2008 20:34
  • Olá Daniel,

     

    Se você teve retorno então de fato as permissões estão Ok, as tabelas são as corretas, os esquemas estão certos... Enfim, me parece que quando você conecta via Toad e via SQL Server há uma diferença em como as datas são comparadas. Agora para mapear essas diferenças...

     

    Em todo caso, está definitivamente mapeado que o problema não é com o SQL Server. Acho que agora é partir para o Oracle e ver que configurações devem ser feitas para que as comparações de data sejam feitas da forma que você deseja.

     

    [ ]s,

     

    Gustavo

    quinta-feira, 25 de setembro de 2008 20:40
  • Funcionou alterando as as posições das datas conforme o Caio me indicou.

     

    Muito obrigado.

     

    quinta-feira, 25 de setembro de 2008 20:51
  • Gustavo/Caio,

     

    Quando realizo o select no Openquery funciona normalmente, porém quando utilizo o 'With' para armazenar o Openquery, desta maneira abaixo e tendo executar um insert em uma tabela exibe o seguinte erro:

     

    Poderiam ajudar?

     

    Code Snippet

    With Daniel As (

    SELECT *

    FROM

    OPENQUERY(COBPRD01,

    'Select Acoes.Account_ID,

    to_date(to_char(Acoes.EXECUTION_date, ''DD/MM/YYYY''), ''DD/MM/YYYY'') "Dt_Exec",

    DescAcoes.Family_Id,

    DescAcoes.SHDESC,

    Acoes.Status

    From ICS_E_ACTION_LAUNCHER Acoes,

    ICS_R_ACTION DescAcoes

    WHERE Acoes.Action_Id = DescAcoes.Action_Id

    And Trunc(Acoes.EXECUTION_DATE) >= ''2008-08-01'' AND Trunc(Acoes.EXECUTION_DATE) <= ''2008-08-31''

    Group By Acoes.Account_ID, to_date(to_char(Acoes.EXECUTION_date, ''DD/MM/YYYY''), ''DD/MM/YYYY''),

    DescAcoes.Family_Id, DescAcoes.SHDESC, Acoes.Status')

    )

     

     

    Code Snippet

    OLE DB provider "OraOLEDB.Oracle" for linked server "COBPRD01" returned message "".

    Msg 7346, Level 16, State 2, Line 1

    Cannot get the data of the row from the OLE DB provider "OraOLEDB.Oracle" for linked server "COBPRD01".

     

     

    quinta-feira, 25 de setembro de 2008 21:21
  • Olá Daniel,

     

    Acredito que você devesse separar as Threads. O primeiro era um problema de como fazer a consulta e o segundo já é um outro problema associado a uma limitação de Linked Server. É que se mantermos muitos assuntos na mesma Thread o índice de respostas na Thread cai (ninguém gosta de ver aquela Thread como um monte de posts e não resolvida) além de prejudicar o sistema de classificação. Acredito também que o Caio mereça a pontuação, pois, resolveu a dúvida.

     

    Em todo caso, normalmente esse tipo de limitação ocorre porque sua pesquisa não possui algum campo que seja chave primária e atualizações via Linked Server precisam referenciar tabelas ou pesquisas que tenha chave primária contemplada.

     

    [ ]s,

     

    Gustavo

    quinta-feira, 25 de setembro de 2008 21:35
  • Ok. Estarei abrindo outro post.

     

    quinta-feira, 25 de setembro de 2008 22:08