Entendendo SX2, SX3 e SIX

Entendendo SX2, SX3 e SIX

Se você trabalha com Protheus, já deve ter ouvido falar em SX2, SX3 e SIX — aquelas “siglas misteriosas” do dicionário de dados. Elas parecem complicadas à primeira vista, mas, na prática, são apenas maneiras do sistema guardar informações sobre tabelas, campos e índices. Neste artigo eu vou explicar, com calma e exemplos do dia a dia, o que cada uma representa, como se relacionam e por que é importante conhecê-las antes de mexer na estrutura do seu ambiente.

O que é um dicionário de dados (de um jeito simples)

Pense no dicionário de dados como a ficha técnica de cada tabela do sistema. Num caderno de receitas, além da lista de ingredientes, você teria notas como “quantidade”, “tipo” (salgado/doce) e “tempo de preparo” — no Protheus, o dicionário guarda esse tipo de informação sobre cada campo e cada tabela.

  • Quem usa: desenvolvedores, consultores, DBAs e até analistas de negócio que precisam entender a estrutura.
  • Para que serve: validar integrações, criar relatórios, gerar telas, evitar erros ao gravar/ler dados.
  • Risco de ignorar: alterações feitas só no arquivo físico (DBF/SQL) sem atualizar o dicionário podem causar falhas no ERP.

Visão geral: SX2, SX3 e SIX — cada um na sua função

As três siglas aparecem nos ambientes Protheus para registrar metadados essenciais:

  • SX2 — geralmente armazenaria a definição dos campos: nome lógico, tipo, tamanho, máscara, se é obrigatório, descrição e propriedades de interface.
  • SX3 — relacionada à definição das tabelas/arquivos: nome físico, alias, chave primária, ordem dos campos, e descrições maiores sobre o arquivo como um todo.
  • SIX — guarda informações sobre os índices: nome do índice, campos que o compõem, ordem (asc/desc), tipo (único, composto) e se é usado como chave primária.

Observação importante: dependendo da versão do Protheus e do banco de dados subjacente, a forma física dessas informações e o nome exato das tabelas de dicionário podem variar. Mas conceitualmente, SX2 → campos, SX3 → arquivos/tabelas, SIX → índices.

SX2 detalhado: a ficha de cada campo

Imagine que a tabela de clientes tem um campo chamado CODCLI. O SX2 é onde existe a “ficha” desse CODCLI: tipo (inteiro, caractere), tamanho, se aceita nulos, descrição curta, máscara de edição (por exemplo, CNPJ/CPF), valores válidos, e até qual máscara exibir na tela.

Por que isso é útil? Porque quando o Protheus precisa montar uma tela, validar um formulário ou gerar um layout de importação, ele consulta essas informações para saber como tratar o dado.

  • Exemplo prático: você cria um campo novo para armazenar “número de delivery” — se não cadastrar esse campo no SX2, o Protheus pode aceitar o dado fisicamente, mas telas, relatórios e rotinas que dependem do dicionário não vão reconhecer o campo.
  • Validação: o SX2 pode marcar um campo como obrigatório, evitando que processos gravem registros incompletos.
  • Migração: quando se importa um layout de dados, o importador usa o SX2 para converter tipos e tamanhos.

Quando for editar o SX2, fique atento a:

  • Tipo e tamanho — alterar sem checar pode truncar dados.
  • Máscaras e descrições — ajudam usuários e integradores.
  • Dependências em código (advpl) — alterações podem quebrar rotinas que assumem o formato antigo.

SX3 detalhado: a identidade da tabela

Enquanto o SX2 descreve o “quem” (os campos), o SX3 descreve o “o quê” — a própria tabela ou arquivo. Pense nele como a capa do caderno: o nome, como ele se relaciona com outros cadernos e qual é a chave que identifica cada página.

Entre as informações típicas do SX3 estão:

  • Nome físico do arquivo/tabela e seus alias.
  • Layout lógico: qual é a chave primária e se existem chaves alternativas.
  • Comentários ou descrições maiores sobre o propósito daquela tabela.
  • Indicação de tabelas relacionadas (quando aplicável).

Exemplo do dia a dia: ao abrir uma rotina que lista produtos, o sistema precisa saber qual tabela consultar e qual campo usar como chave (por exemplo, CODPRO). Essa referência vem do SX3.

Dica: antes de renomear ou recriar tabelas no banco, sempre atualize o SX3 para manter o ERP consistente. Ferramentas de sincronização do Protheus podem comparar o SX3 com o banco e apontar divergências.

SIX (índices): como o sistema encontra as informações rápido

Índices são como índices de um livro: ajudam o Protheus a achar linhas rapidamente sem ler o livro inteiro. O SIX contém a “receita” de cada índice — quais campos participam, em que ordem e que tipo de ordenação usar.

Por que isso importa? Porque índices mal configurados podem deixar consultas lentas ou fazer com que certas buscas ou ordenações não funcionem.

  • Índice primário: normalmente garante unicidade e identifica um registro (por exemplo, um índice sobre CODCLI).
  • Índices secundários: ajudam buscas frequentes, como pesquisar por CPF ou por código de referência.
  • Índice composto: quando uma busca é feita por mais de um campo (ex: cidade + bairro).

Exemplo prático: se o seu relatório busca todos os pedidos por data e vendedor, um índice composto (data, vendedor) vai acelerar muito essa consulta — o SIX é que registra essa combinação para o Protheus saber qual índice usar.

Como SX2, SX3 e SIX se relacionam na prática

Esses três elementos conversam entre si o tempo todo:

  • O SX3 "fala" para o sistema qual tabela está sendo usada e qual é a chave primária;
  • O SX2 descreve cada campo dessa tabela para que o sistema saiba como tratá-lo;
  • O SIX informa quais campos formam índices, permitindo buscas e ordenações rápidas.

Quando você cria um campo novo (ex.: TELEFONE2) para a tabela de clientes:

  1. Adicione a definição do campo no SX2 (tipo, tamanho, máscara);
  2. Atualize o SX3 se a nova coluna faz parte da estrutura lógica que precisa ser conhecida (por exemplo, se for chave alternativa);
  3. Crie um índice no SIX se for necessário buscar frequentemente por esse campo.

Não fazer alguma dessas etapas é o que causa problemas clássicos: tela que não mostra o campo, rotina que não grava, relatório que não reconhece os dados.

Casos práticos: tarefas comuns e como os dicionários impactam

A seguir alguns exemplos práticos que você, consultor ou desenvolvedor, provavelmente vai encontrar:

1) Acrescentar um campo novo à tabela de clientes

  • SX2: definir o novo campo (NOME: TELEFONE2, TIPO: caractere, TAMANHO: 15, MASCARA: (00) 00000-0000, OBRIGATÓRIO: não).
  • SX3: normalmente não precisa mudar se a tabela física já recebeu a coluna, mas se o campo fizer parte de alguma chave lógica, atualize.
  • SIX: só criar índice se for pesquisar muito por TELEFONE2.
  • Resultado: telas que usam dicionário passam a exibir e validar o novo campo corretamente.

2) Tornar um campo obrigatório

  • Altere apenas no SX2 para marcar o campo como obrigatório (se a rotina respeitar o dicionário, ela vai bloquear gravação sem o dado).
  • Verifique rotinas customizadas — algumas podem ignorar o dicionário e validar manualmente.

3) Otimizar uma consulta lenta

  • Identifique a consulta que é lenta (ex.: busca por data e vendedor).
  • Verifique se existe um índice adequado no SIX; se não, crie um índice composto (DATA, VENDEDOR).
  • Atualize o SX3/SX2 se necessário, e teste impacto em gravações (mais índices = gravações levemente mais lentas).

Ferramentas e formas seguras de consultar/editar o dicionário

Editar diretamente as tabelas do banco pode ser tentador, mas perigoso. Use ferramentas oficiais ou telas do próprio Protheus sempre que possível.

  • Telas de administração do Protheus: permitem visualizar o dicionário e aplicar alterações com consistência.
  • Ferramentas de deploy/migração: sincronizam estrutura do banco com o dicionário e aplicam scripts com segurança.
  • Backup antes de qualquer alteração: um must-have. Se algo der errado, você precisa restaurar o estado anterior.

Dica prática: sempre faça alterações primeiro em ambiente de homologação. Teste telas, relatórios, integrações e rotinas batch antes de promover para produção.

Boas práticas e armadilhas comuns

Algumas regras simples reduzem bastante os problemas:

  • Documente cada alteração no dicionário (o que foi feito, por que e por quem).
  • Use nomes lógicos e consistentes para campos e índices — facilita manutenção.
  • Acompanhe dependências: se uma rotina usa um campo, a alteração desse campo exige revisão do código.
  • Evite remover índices sem análise; isso pode degradar performance.
  • Não confie só na tabela física; sempre sincronize com SX2/SX3/SIX.

Armadilhas comuns:

  • Alterar tamanho de campo sem checar conteúdos existentes (truncamento).
  • Criar muitos índices "para ver se melhora" — índices demais prejudicam gravação.
  • Editar diretamente em produção sem testes.

Como diagnosticar problemas relacionados ao dicionário

Quando algo quebra, o fluxo de investigação costuma ser parecido:

  1. Identifique o erro (ex.: tela que não mostra campo, rotina que dá erro de tipo, busca lenta).
  2. Verifique se o campo existe fisicamente na tabela (banco) e se está no SX2.
  3. Cheque o SX3 para confirmar a chave e alias da tabela;
  4. Analise os índices no SIX para ver se há índice adequado ou conflitos;
  5. Reproduza em homologação e teste alterações com backup completo.

Exemplo real: uma importação falhando porque um campo numérico foi definido como caractere no SX2 (ou vice-versa). A solução passa por corrigir o tipo no SX2 e, se necessário, converter os dados na tabela.

Migração entre ambientes e versões: o que ficar de olho

Ao migrar Protheus entre ambientes (dev → hom → prod) ou atualizar versão, o dicionário merece atenção:

  • Verifique scripts de atualização que alteram dicionário — alguns updates da TOTVS já vêm com mudanças no SX2/SX3/SIX;
  • Use ferramentas de comparação entre dicionários para identificar diferenças;
  • Planeje janela de testes para que integrações e rotinas se ajustem às mudanças.

Importante: a mesma tabela pode ter pequenas diferenças no dicionário entre versões — algumas rotinas novas podem depender de campos/índices que não existiam antes.

Casos de troubleshooting avançado

Aqui vão três cenários e como agir:

1) Tela não exibe campo novo

  • Verifique se o campo foi registrado no SX2 com o mesmo nome lógico que o campo físico;
  • Cheque se a rotina que monta a tela lê o dicionário (algumas rotinas legacy usam layouts estáticos);
  • Se a rotina é custom, atualize o código ou mapa de campos para considerar o novo campo.

2) Consulta que antes era rápida ficou lenta após inclusão de campo

  • Analise o plano de execução (se estiver em SQL) e verifique se existe índice para os filtros;
  • Crie ou ajuste índice no SIX somente se testes mostrarem ganho;
  • Considere reorganizar índices ou compactar tabelas em bancos que exigem manutenção física.

3) Erro de gravação por tipo incompatível

  • Compare o tipo/tamanho do campo na tabela física com o registrado no SX2;
  • Corrija a discrepância no SX2 ou converta os dados no banco para o tipo esperado;
  • Teste gravação em ambiente seguro antes de aplicar em produção.

Checklist rápido antes de alterar SX2/SX3/SIX

  • Tenho backup completo do banco e dicionário?
  • Testei em homologação e revirei rotinas dependentes?
  • Documentei o motivo da alteração e quem aprova?
  • Analisei impacto em performance (mais índices = gravação mais lenta)?
  • Tenho rollback plan (script que desfaz a mudança)?

Conclusão: Por que conhecer SX2, SX3 e SIX faz diferença

Entender SX2, SX3 e SIX é mais do que decorar siglas — é compreender como o Protheus estrutura e encontra informação. Quando você conhece essa arquitetura, evita problemas comuns, consegue otimizar consultas e integrações e garante que mudanças sejam feitas com segurança.

Se você está começando, não tenha medo de perguntar ao responsável pelo ambiente ou ao time de infraestrutura antes de tocar no dicionário. E se for desenvolver, sempre teste em homologação, documente cada passo e faça backup. Pequenos cuidados hoje evitam dores de cabeça enormes amanhã.

Quer um resumo rápido? SX2 = campos; SX3 = tabelas/arquivo; SIX = índices. O resto é prática: saber onde cada peça encaixa e agir com processo e cuidado.

Index

Categorias

Sobre o Autor

Foto do Autor
Fábio Hayama

Apaixonado por gestão, tecnologia e inovação, Fábio Hayama possui mais de 15 anos de experiência no universo do ERP Protheus, estratégia empresarial e automação de processos.

Leia mais sobre o Fábio

Entre em contato conosco

Veja mais artigos relacionados

Entendendo SX2, SX3 e SIX
Se você trabalha com Protheus, já deve ter ouvido falar em SX2, SX3 e SIX — aquelas “siglas misteriosas” do dicionário de dados...
Protheus: rotina parou? O que ch…
Atualizar o Protheus é um procedimento rotineiro em ambientes corporativos, mas nem sempre a entrega do build ou patch é indolo...
Mapeamento antes do Protheus
Atualizar o Protheus não é só apertar um botão: é planejamento, cuidado e muita conversa com o time. Neste artigo eu vou te gui...
Dívida técnica em Protheus
Customizações em sistemas ERP como o Protheus são inevitáveis para atender requisitos de negócio específicos. Entretanto, nem t...