cancel
Showing results for 
Search instead for 
Did you mean: 

Campo de usuário em tabela de usuário não respeita o tamanho definido

Former Member
0 Kudos

Criei uma tabela de usuário e dentro dela criei 10 campos alfanuméricos com tamanho de 10 posições. Ao executar a procedure SP_HELP no SQL Server para verificar o tamanho dos campos na estrutura da tabela verifiquei que o tamanho foi definido como -1, ou seja, o tamanho do campo não foi corretamente informado pelo B1 na criação da tabela e o SQL Server 2005 acabou por assumir como padrão o tamanho máximo de 4096 bytes.

Se olharmos apenas para a definição da tabela e dos campos no B1 os valores são apresentados corretamente, mas não correspondem aos valores definidos nos metadados do banco. Isso é extremamente problemático pois derruba violentamente a performance das consultas nas tabelas de usuário.

Existe algum workaround que a gente pode utilizar para resolver este problema?

Testamos a criação de tabelas e campos de usuários na versão 2005B, rodando no SQL Server 2005 com as PLs 40, 41 e 42 e nessas três configurações o problema ocorreu sempre da mesma forma, como descrito acima.

Sei que podemos forçar a correção da estrutura de dados das tabelas na mão, pelo comando ALTER TABLE do SQL Server, mas isso será apontado pelo Early Watch? Corremos o risco de perder a garantia do produto?

Qualquer informação que ajudar a solucionar este problema será muito bem aceita.

[]'s

Edited by: Rui Pereira on Nov 7, 2008 9:27 AM

Accepted Solutions (0)

Answers (2)

Answers (2)

Former Member
0 Kudos

Gabriel fiz o teste aqui para você e infelizmente comigo não ocorreu o erro, estou usando o PL 42 e a criação ocorreu sem problema.

Att,

Vitor Avila (Flag SAP Solution Factory)

Edited by: Rui Pereira on Oct 23, 2008 3:05 PM

Former Member
0 Kudos

Gabriel, caso não tenha resolvido ainda como foi criada as tabelas? Você tem o XML para postar.

Att,

Vitor Avila (Flag SAP Solution Factory)

Former Member
0 Kudos

Oi Vitor,

O problema ainda não foi resolvido. Abrimos um chamado na SAP pois entendemos que este comportamento do SBO não é o correto uma vez que ao definir campos alfanuméricos com o maior tamanho possível, as estruturas (metadados) acabam ficando gigantes e isso joga a performance dos add-ons e consultas formatadas pra baixo.

Você pode reproduzir o problema criando UDFs em tabelas standard ou em UDTs pelo próprio B1. Não precisa criar os campos pelo SDK para que o problema ocorra não. Basta definir o campo do tipo Alfanumérico que, ao executar a SP_HELP no SQL Server você verá a estrutura do seu campo mais ou menos assim:

CAMPO NVARCHAR(-1)

Na documentação do SQL Server é explicado que o -1 representa a capacidade máxima de armazenamento do campo.

Este problema só acontece no SQL Server 2005. No SQL Server 2000 o B1 se comporta bem.

Edited by: Gabriel Izar on Oct 8, 2008 3:31 PM