FAQs - Suporte técnico

RM - BD - ERRO "Dynamic SQL generation"

Ocorrência
Dynamic SQL generation for the DeleteCommand is not supported against a SelectCommand that does not return any key column information.



Ambiente
RM - Todas as versões - Oracle e SQL Server

Causa
Este erro ocorre pelo fato do provider não ter conseguido obter a informação referente a chave primária da tabela que sofrerá a alteração ou exclusão dinamicamente.

O provider tenta retornar nos catálogos do banco de dados as informações da chave primária da tabela para realizar o comando, quando por algum motivo estas informações não são retornadas o erro ocorre.

Geralmente o erro está relacionado a inconsistências na base de dados, ou seja, a tabela que será afetada pela operação deveria possuir uma chave primária e não possui ou não foi localizada por motivo da criação de sinônimos ou views materializadas para as tabelas de catálogo.


Solução
1. Identificando e solucionando o problema em SQL Server:

Para identificar o problema no SQL Server o ideal é a avaliação da consistência estrutural da base em comparação com a base padrão TOTVS para a mesma versão.

A base vazia padrão TOTVS pode ser obtida através do portal de atendimento: https://suporte.totvs.com/

Além disso a captura de um profiler/tracer no momento do erro pode evidenciar qual tabela exatamente está inconsistente.

No SQL Server um rastreamento pode ser realizado utilizando o SQL Server Profiler do SQL Server.

Segue o link que direciona ao tutorial para execução do profiler: SQL Server - Profiler SQL

Caso ainda assim não localize a tabela, a consulta abaixo pode identificar as tabelas sem chave primária, em comparação com uma base padrão TOTVS poderão ser encontradas as tabelas inconsistentes (sem a primary key) na base que apresenta o problema.

SELECT name AS 'TabelaSemChavePrimaria'
        FROM   SYS.tables
        WHERE  OBJECTPROPERTY(OBJECT_ID, 'TableHasPrimaryKey') = 0
        ORDER  BY name 

Após a identificação da tabela inconsistente, verifique em uma base padrão ou junto a equipe de suporte da TOTVS qual a estrutura correta da PK a ser criada e crie a PK em um ambiente controlado realizando um teste para verificar se o problema foi solucionado.

Caso positivo, em um momento de pouca ou nenhuma utilização da base efetue a criação da PK na base de produção.

 

2. Identificando e solucionando o problema em Oracle:

Em bases de dados Oracle, além da ausência de chaves primárias o problema pode estar relacionado a SINONYMS e VIEWS MATERIALIZADAS criada com o script disponível para download no link: views_materializadas_dic_oracle.sql.

A criação de SYNONYMS na base TOTVS linha RM é realizado para algumas tabelas utilizadas no acesso ao sistema, para que as mesmas sejam passíveis de ser consultadas pelo usuário SYSDBA.

São elas: GPARAMS, GPERMIS, GUSUARIO, GACESSO, GCOLIGADA, GSISTEMA, GUSRPERFIL, GSERVICO, GDATALOG, GPARAMETROSSISTEMA

Excetuando estas tabelas, a criação de SYNONIMOS em outras tabelas que fazem são atualizadas em UPDATES ou DELETES dinâmicos pode ocasionar erros.

A criação de VIEWS Materializadas para os catálogos do Oracle é realizada em alguns clientes como alternativa de melhoria de desempenho para as consultas realizadas pelo provider da aplicação.

Para verificar se possui views materializadas na base realize a seguinte consulta:


SELECT mview_name FROM all_mviews WHERE OWNER = 'RM';


A existência destes objetos não consistem em um problema e tem o objetivo de melhorar o desempenho, porém as mesmas precisam estar sempre atualizadas semanalmente, com isso a procedure spJobAtualizaViewMat.sql deve ser associada a um job para se executada nesse período, pois ela é responsável por realizar essa atualização.

Caso as duas situações acima não sejam a causa do problema, é provável que o problema esteja sendo causado pela ausência da chave primária de alguma tabela.

Para a identificação seguimos a mesma linha do SQL Server, comparação de estruturar e rastreamento do banco através do tracer.

Para executar um tracer no banco de dados Oracle peça ao seu DBA que gere um relatório AWR ou utilize alguma ferramenta de auditoria do banco de dados.

Caso ainda assim não localize a tabela, a consulta abaixo pode identificar as tabelas sem chave primária, em comparação com uma base padrão TOTVS poderão ser encontradas as tabelas inconsistentes (sem a primary key) na base que apresenta o problema.

 

SELECT TABLE_NAME FROM ALL_TABLES WHERE OWNER='RM'
MINUS
SELECT TABLE_NAME FROM ALL_CONSTRAINTS WHERE CONSTRAINT_TYPE='P' AND OWNER='RM'

Caso ainda assim não seja possível identificar a inconsistência na base causadora do problema acione nossa equipe de atendimento para esclarecimentos.

A equipe de consultoria também poderá ser acionada para atendimento personalizado e solução do problema.

Para Mais Informações

 *COMUNIDADE  R@Tecnologia
Canais de Atendimento:
Chamado: Através do Portal Totvs: www.suporte.totvs.com.br
Telefônico: 4003-0015 Escolhendo as opções 2 – (Software), 2 – (Suporte Técnico), 3 – (RM), 8 – (Tecnologia), 2 – (Banco de Dados);

Esse artigo foi útil?
Usuários que acharam isso útil: 0 de 0

0 Comentários

Por favor, entre para comentar.
X Fechar

Olá ,

Há pendência referente a um de seus produtos contratados para a empresa ().

Entre em contato com o Centro de Serviços TOTVS para tratativa.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cobrança – Verificação de pendências financeiras . clique aqui.

TOTVS

X Fechar

Olá ,

Seu contato não está cadastrado no Portal do Cliente como um perfil autorizado a solicitar consultoria telefônica.

Por gentileza, acione o administrador do Portal de sua empresa para: (1)configurar o seu acesso ou (2)buscar um perfil autorizado para registro desse atendimento.

Em caso de dúvidas sobre a identificação do contato administrador do Portal, ligue (11) 4003-0015, opção 7 e, em seguida, opção 4 para buscar o suporte com o time de Assessoria ao Portal do Cliente. . clique aqui.

TOTVS

X Fechar

Olá ,

Para o atendimento de "Consultoria Telefônica" você deverá estar de acordo com o Faturamento.

TOTVS

X Fechar

Olá,

Algo inesperado ocorreu, e o usuario nao foi reconhecido ou você nao se encontra logado

Por favor realize um novo login

Em caso de dúvidas, entre em contato com o administrador do Portal de Clientes de sua empresa para verificação do seu usuário, ou Centro de Serviços TOTVS.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cadastros . clique aqui.

TOTVS

Chat _

Preencha os campos abaixo para iniciar o atendimento:

Chat _