SQL - SQLCODE's - Códigos negativos -4742


Volta a página anterior

Volta ao Menu Principal


Desenvolvido por DORNELLES Carlos Alberto - Analista de Sistemas - Brasília DF. - cad_cobol@hotmail.com

SQLCode -4742

   
 
  • Causa
    • THE STATEMENT CANNOT BE EXECUTED BY DB2 OR IN THE ACCELERATOR (REASON reason-code)

      Uma instrução não pode ser executada pelo Db2® ou por um servidor acelerador.

      A instrução não pode ser executada pelo Db2 se alguma das seguintes condições for verdadeira:
      • O registro especial CURRENT GET_ACCEL_ARCHIVE está definido como YES e a instrução precisa acessar dados armazenados apenas no servidor acelerador.
      • O registro especial CURRENT QUERY ACCELERATION está definido como ALL, portanto, a instrução deve ser executada no servidor acelerador.
      • Uma função que foi referenciada pode ser executada apenas em um servidor acelerador.
        A função MEDIAN pode ser executada apenas em um servidor acelerador.
      • A instrução faz referência a uma tabela somente do acelerador.
      A instrução não pode ser executada por um servidor acelerador se qualquer condição indicada por um código de razão for verdadeira.
      reason-code
      Um valor numérico que fornece informações adicionais sobre o motivo pelo qual a instrução não pode ser executada no servidor acelerador.
      Nota: Se você precisar de mais informações sobre por que a instrução não pode ser executada no acelerador, emita a instrução EXPLAIN e examine a saída da tabela DSN_QUERYINFO_TABLE.
      Os valores possíveis são:

      1 Nenhum servidor acelerador ativo foi encontrado ou a tabela não foi ativada para descarregamento de consulta no acelerador quando a instrução foi executada.
      2 O registro especial ATUAL ACCELERATION QUERY ACCELERATION está definido como NONE.
      3 O Db2 classificou a consulta como uma consulta de execução curta ou o Db2 determinou que o envio da consulta para um servidor acelerador não oferecia vantagem de desempenho.
      4 A consulta não é somente leitura.
      6 O cursor é definido como rolável ou é um cursor posicionado no conjunto de linhas.
      7 A consulta usa vários esquemas de codificação.
      8 A cláusula FROM da consulta especifica uma referência de data-change-table-reference..
      9 A consulta contém uma expressão de tabela aninhada.
      10 A consulta contém uma referência recursiva a uma expressão de tabela comum.
      11 A consulta contém funcionalidade não suportada.
      12 A consulta faz referência a uma tabela que possui uma das seguintes características:
      • Não está definido no servidor acelerador
      • É definido em um servidor acelerador diferente de outra tabela na consulta
      • É definido no servidor acelerador, mas não está ativado para aceleração de consulta
      13 O servidor acelerador que contém as tabelas mencionadas na consulta não é iniciado.
      14 Uma coluna mencionada na consulta foi alterada no Db2 após o carregamento dos dados no servidor acelerador.
      15 A consulta usa a funcionalidade disponível apenas no DB2 10 ou posterior e a funcionalidade não é suportada pelo servidor acelerador.
      17 A consulta é uma instrução INSERT from SELECT.
      O parâmetro do subsistema QUERY_ACCEL_OPTIONS não especifica a opção 2 para ativar a aceleração do INSERT a partir das instruções SELECT.
      18 A consulta usa a funcionalidade disponível apenas no Db2 11 ou posterior e a funcionalidade não é suportada pelo servidor acelerador.
      19 O servidor acelerador não está no nível correto e não suporta uma função na instrução SQL.
      20 A consulta é um cursor de conjunto de linhas que é declarado WITH RETURN, executa remotamente ou executa sob uma rotina SQL PL.
      21 A consulta contém uma subconsulta correlata que não é suportada para aceleração.
      22 A instrução faz referência a uma tabela somente do acelerador, mas a instrução não é descarregável.
      Por exemplo:
      • A instrução MERGE faz referência a uma tabela somente do acelerador.
      • A instrução UPDATE ou DELETE faz referência a uma tabela somente aceleradora, mas a tabela de destino da UPDATE, DELETE é uma tabela Db2 normal:
        UPDATE DB2_TABLE SET .. (SELECT .. FROM ACCEL_ONLY_TABLE).
      • INSERT, UPDATE ou DELETE de uma expressão de linha com subseleção. UPDATE ACCEL_ONLY_TABLE SET (C1, C2) = (SELECT C3®, C4 FROM TABELA2);
      23 A instrução SELECT INTO está vinculada à aceleração, mas é executada como uma instrução SELECT INTO remota, que não é suportada para aceleração.
      24 A instrução DDL ou DML não pode ser descarregada porque a conexão com o servidor acelerador não permite atualizações.
      Esse problema pode ocorrer quando um solicitante de confirmação de duas fases (por exemplo, um solicitante do Db2 for z/OS ) se conecta a um servidor do Db2 for z/OS para descarregar uma instrução DDL ou DML.
      25 A instrução contém uma referência a uma coluna com um tipo de dados não suportado.
      26 A cláusula da instrução CREATE TABLE IN ACCELERATOR especifica um alias do acelerador que resolve para mais de um acelerador.
      27 A instrução DROP TABLE especifica uma tabela somente de aceleração de referência, que não pode ser removida usando a instrução DROP TABLE.
      30 O comportamento WAITFORDATA do acelerador é solicitado, mas não pode ser alcançado para esta consulta.
      A consulta não será acelerada.
      A consulta especifica uma tabela acelerada do Db2, mas a mesma unidade de trabalho do Db2 inclui uma alteração anterior do Db2 não confirmada que não estará disponível para a consulta quando for executada no acelerador.
      A alteração do Db2 pode ou não estar relacionada à tabela acelerada do Db2 mencionada na consulta.
      31 O comportamento WAITFORDATA do acelerador é solicitado, mas não pode ser alcançado para esta consulta que especifica uma tabela somente de acelerador (AOT) e uma tabela acelerada de Db2 .
      A consulta não será acelerada e não pode ser executada no DB2.
      A mesma unidade de trabalho Db2 inclui uma alteração Db2 não confirmada anterior que não estará disponível para a consulta quando ela for executada no acelerador.
      A alteração pode ou não estar relacionada à tabela acelerada do Db2 que é referenciada na consulta.
      32 O comportamento WAITFORDATA do acelerador é solicitado, mas não pode ser alcançado para esta consulta.
      A consulta não será acelerada.
      A consulta especifica uma tabela acelerada do Db2, mas a mesma unidade de trabalho do Db2 inclui uma alteração anterior da tabela somente do acelerador (AOT) não confirmada.
      Essa alteração não confirmada resultou na criação de um SI ( Isolamento de Instantâneo do Banco de Dados do Acelerador ) para esta unidade de trabalho antes da execução da consulta.
      Esse SI do banco de dados do acelerador pode impedir que alterações Db2 confirmadas e replicadas, feitas por essa transação ou por uma transação diferente, estejam disponíveis para a consulta acelerada, mesmo se as alterações do Db2 forem replicadas no acelerador antes que a consulta seja executada lá.
      33 A consulta não pôde ser transferida para o acelerador devido a motivos diferentes em diferentes versões do acelerador.
      34 A instrução incluía uma expressão que pode ser executada em um servidor acelerador apenas quando o registro especial CURRENT QUERY ACCELERATION está definido como ALL, ENABLE ou ELEGIBLE.
      No entanto, o registro especial ATUAL ACCELERATION QUERY é definido como NENHUM ou ATIVAR COM FAILBACK.
      35 A consulta usa a funcionalidade disponível apenas no Db2 12 e o servidor acelerador não suporta a funcionalidade.
      36 O parâmetro USE ONLY NEW ACCELERATOR_TYPE está definido como YES; no entanto, um acelerador V7 ativo ou posterior não foi encontrado ou a tabela não foi ativada para descarregamento de consulta no acelerador V7 ou posterior quando a instrução foi executada.
      37 O parâmetro do subsistema USE ONLY NEW ACCELERATOR_TYPE está definido como YES, mas o acelerador V7 ou posterior que contém as tabelas da consulta não é iniciado.
      38 O parâmetro USE ONLY NEW ACCELERATOR_TYPE está definido como YES, mas o acelerador V7 ou posterior não está no nível correto.
  • Ação do sistema
    • A declaração não pode ser processada.
  • Resposta ao Desenvolvedor
    • Use o código de razão para determinar a causa da falha e execute a ação apropriada:

      1 Inicie o servidor acelerador ou ative a tabela para descarregamento de consultas.
      2 Defina o registro especial ATUAL ACCELERATION QUERY para ENABLE, ENABLE WITH FAILBACK, ELEGIBLE ou ALL.
      3 Nenhum
      4 Verifique se a consulta atende aos critérios para uma consulta somente leitura. Consulte as informações sobre cursores somente leitura em DECLARE CURSOR .
      6 Remova a cláusula SCROLL ou WITH ROWSET POSITIONING da declaração do cursor.
      7 Verifique se todos os objetos aos quais a consulta se refere têm o mesmo esquema de codificação.
      8 Reescreva a cláusula FROM da consulta para que ela não inclua uma cláusula de referência de tabela de alteração de dados .
      9 Verifique se a cláusula FROM da consulta não contém uma subconsulta.
      10 Verifique se a cláusula FROM da consulta não faz referência a uma expressão de tabela comum.
      11 Remova a funcionalidade não suportada da consulta.
      12 Verifique se todas as tabelas referenciadas pela consulta estão no mesmo servidor acelerador e que todas as tabelas estão ativadas para aceleração de consulta.
      13 Inicie o servidor acelerador que contém as tabelas mencionadas na consulta.
      14 Carregue a tabela alterada no servidor acelerador novamente.
      15 Verifique se a consulta não usa nenhuma funcionalidade que não seja suportada pelo servidor acelerador.
      17 Ative a aceleração das instruções INSERT de SELECT, atualizando o parâmetro do subsistema QUERY_ACCEL_OPTIONS para incluir a opção 2.
      18 Verifique se a consulta não usa nenhuma funcionalidade que não seja suportada pelo servidor acelerador.
      19 Atualize o servidor acelerador para ativar a aceleração da instrução SQL que contém o texto da função ou o texto da expressão.
      Verifique se seus valores de QUERY_ACCEL_OPTIONS estão especificados corretamente.
      Preste atenção especial às opções 4 e 7, que, se não estiverem definidas corretamente, podem causar -4742 com o código de retorno 19.
      20 Se o uso da consulta do cursor do conjunto de linhas não puder ser alterado, use QUERY ACCELERATION NONE.
      21 Reescreva a subconsulta correlacionada que não é suportada para aceleração como uma expressão JOIN.
      22 Certifique-se de que a instrução não faça referência a uma tabela somente do acelerador ou substitua a tabela somente do acelerador por uma tabela Db2, para que a consulta possa ser executada no Db2.
      23 Remova a instrução SELECT INTO ou REBIND o pacote com a opção de ligação QUERYACCELERATION (NONE).
      Se o programa for um procedimento ou função SQL PL, use um dos seguintes métodos em vez de usar BIND ou REBIND PACKAGE:
      • Altere o procedimento ou a função usando ALTER PROCEDURE ou ALTER FUNCTION
      • Solte e recrie o procedimento ou função usando CREATE PROCEDURE ou CREATE FUNCTION
      24 Emita a instrução DDL ou DML diretamente do servidor Db2 for z/OS ou de um solicitante que não requer protocolos de confirmação em duas fases, por exemplo, o IBM® Data Server Driver para JDBC.
      25 Remova a referência à coluna com um tipo de dados não suportado.
      26 Assegure-se de que a cláusula IN ACCELERATOR na instrução CREATE TABLE especifique um alias do acelerador que seja resolvido para apenas um acelerador.
      27 Para eliminar uma tabela apenas de acelerador de referência, chame o procedimento armazenado IBM Db2 Analytics Accelerator para z/OS ACCEL_REMOVE_REFERENCE_TABLES.
      30 Confirme a alteração Db2 anterior na unidade de trabalho Db2 antes de executar a consulta a ser acelerada ou não especifique um atraso WAITFORDATA do acelerador para esta unidade de trabalho.
      31 Confirme a alteração Db2 anterior na unidade de trabalho Db2 antes de executar a consulta a ser acelerada ou não especifique um atraso WAITFORDATA do acelerador para esta unidade de trabalho.
      32 Confirme a alteração anterior da tabela apenas do acelerador (AOT) na unidade de trabalho Db2 antes de executar a consulta ou não especifique um atraso WAITFORDATA do acelerador para esta unidade de trabalho.
      33 Solicite a saída EXPLAIN e verifique a coluna REASON_CODE na tabela DSN_QUERYINFO_TABLE.
      Para situações que resultam no código de razão 33, duas linhas são retornadas: uma que explica por que a consulta não pode ser transferida para o IBM Db2 Analytics Accelerator para versões z/OS anteriores à V7 e outra que explica por que a consulta não pode ser transferida para o IBM Db2 Analytics Accelerator para z / OS V7 ou posterior.
      No último caso, a descrição do erro pode ser prefixada por (V x ) para indicar a versão específica do acelerador.
      O prefixo (V x ) é exibido apenas quando o código de razão 33 é retornado pela consulta original.
      Veja as respostas do programador para os dois códigos de razão diferentes para a versão correspondente do acelerador.
      34 Defina o registro especial CURRENT QUERY ACCELERATION como ALL, ENABLE ou ELEIGIBLE para executar expressões somente de passagem.
      35 Verifique se a consulta não usa nenhuma funcionalidade que não seja suportada pelo servidor acelerador.
      36 Inicie o acelerador V7 ou posterior ou ative a tabela para descarregamento de consultas.
      37 Inicie o acelerador V7 ou posterior que contém as tabelas mencionadas na consulta.
      38 Atualize o servidor acelerador V7 ou posterior para ativar a aceleração da instrução SQL que contém o texto da função ou o texto da expressão.
      Verifique se seus valores QUERY_ACCEL_OPTIONS estão especificados corretamente.

      SQLSTATE:560D5
© Copyright IBM Corp.