8 Replies Latest reply: Jun 21, 2016 8:35 AM by Clever Anjos RSS

    Falha ao carregar dados a partir de função SQL

      Bom dia pessoal. Acho que esta dúvida vai ficar sem resposta mas gostaria de compartilhar só pra desabafar. hehe

       

      Tenho um problema que está me tirando o sono. Desenvolvi uma aplicação QV a qual rodo em 3 empresas diferentes. Todas utilizam o mesmo ERP e o mesmo SGBD (SQL Server). Porém cada uma tem uma versão diferente de SQL.

       

      SQL 2005 - QlikView 10 - Funciona OK (Tem o pior Hardware - 16 Gb de RAM num banco de quase 200 Gb)

      SQL 2008 - QlikView 11 - Personal - Erro (Tem o melhor Hardware - 64 Gb de RAM num banco de menos de 100 Gb)

      SQL 2012 - QlikView 11 - Funciona OK (Tem um Hardware mediano - 32 Gb de RAm num banco de quase 150 Gb)

       

      Minha aplicação trabalha com Demonstração de Resultados da Contabilidade.

       

      Dentro de uma tabela do Database estão gravadas as fórmulas que cada empresa criou na montagem da sua DRE. Existe também no Database uma função a qual eu passo parâmetros por meio de um For no QlikView. Os parâmetros são coisas como: Empresa, Data, Conta, etc. sendo que a função pega estes parâmetros, encontra a fórmula da conta, faz todos os cálculos previstos na fórmula e me devolve apenas um valor o qual atribuo a um campo dentro da minha tabela de retorno e funciona "de boa".

       

      Porém na empresa do SQL 2008 durante o FOR "eventualmente" o SQL Server não retorna o Valor pois a função apresenta um erro o qual não consegui salvar agora, mas fala sobre "excesso de recursividade" (se não me engano) isso porque pelo visto esta função chama outra função, que chama outra função, que chama outra função... etc.

       

      O mais estranho é que se eu rodar a mesma função que apresentou erro durante a recarga no QlikView diretamente no Enterprise Manager é retornado um valor sem nenhum problema. (E esta é minha dificuldade em capturar o erro do SQL pois no QlikView o erro simples não aparece já que é apenas o retorno da função);

       

      A minha dúvida é: Porque raios nas demais empresas não dá?! E também porque isso é exporádico? (Se eu fizer outra recarga a conta que na primeira vez deu erro vai calcular e o erro vai acontecer em outra conta).

       

      Me ocorreu enquanto escrevia se pode ter a ver com o conector 32 ou 64 bits. Sei lá.

       

      Alguma ideia maluca pra eu testar? hehe

       

      Abraços