Você está na página 1de 9

7/4/2014

Dicas sobre o banco de dados do Protheus(Totvs) | 4SQLServer - Marcel Inowe

4SQLServer Marcel Inowe Um pouquinho de SQL Server

12 de setembro de 2012

em Administrao, SQL Server, Virtual PASS BR


30 Comentrios

Dicas sobre o banco de dados


do Protheus(Totvs)
Ol pessoal,
Esses dias meu amigo Leandro Ribeiro (blog (http://sqlleroy.blogspot.com.br/)| twitter
(https://twitter.com/sqlleroy)) solicitou no Twitter dicas sobre o banco de dados do Protheus e ento
eu percebi que eu sabia vrios detalhes e que poderiam ser muito til para quem ainda no trabalha
com esse produto, mas que um dia possa trabalhar. Para quem no sabe o Protheus um dos
maiores ERPs do mundo, feito pela empresa brasileira Totvs e lder no mercado nacional.
A grande vantagem do Protheus que alm dele ser bem completo ele todo customizvel, ou seja,
voc compra a licena do sistema e pode contratar um desenvolvedor para customiz-lo a seu gosto,
j imaginou isso ? J pensou se voc pudesse fazer isso com qualquer software que comprasse ou
utilizasse ? Pois , por a d para sentir o poder do produto e d para comear a perceber o porque
ele to usado no mercado nacional, mas claro que nem tudo mil maravilhas e obvio que esse
produto tem seus pontos fracos e particularidades e exatamente para discutir isso que esse seu
amigo DBA aqui escreve esse post.
Vamos as dicas:
1. Quase sempre o banco de dados se chama DADOSADV ou pelo menos comea com DADOS.
No me pergunte o motivo, pois eu no sei;
2. A aplicao no acessa o banco de dados diretamente ela usa uma camada intermediria
chamada Top Connect. O Top Connect instalado no mesmo servidor que o banco de dados e a
aplicao se conecta ao Top e o Top se conecta ao SQL Server;
3. O Protheus multiempresa, porm ao contrrio do que estamos acostumado a ver nas
modelagens onde a empresa identificada com um campo dentro de cada tabela, o banco do
Protheus cria uma tabela para cada empresa at a verso 10 do ERP, ento se o teu cliente tiver
mais de uma empresa aberta trabalhando no mesmo banco de dados, para cada empresa ter
uma tabela de cliente, produto, nota fiscal e assim suscetivamente. Agora imaginem uma
construtora do ramo imobilirio que para cada incorporao construda tem que ser aberto um
CNPJ. J pensou se ela tiver mais de 100 empreendimentos construdos ou em construo? O
banco passar de 100 mil tabelas facilmente!
4. A partir da verso 11 do Protheus j possvel criar as empresas dentro da mesma tabela o que
diminui significativamente o nmero de tabelas dentro do banco de dados. Essa dica da verso
11 do Protheus foram dadas pelos amigos Bruno e Luiz Carlos nos comentrios.
5. O nome das tabelas no ultrapassam 6 caracteres e so representados da seguinte maneira: 3
primeiros caracteres a famlia que aquela tabela pertence, os 2 prximos caracteres representa a
http://4sqlserver.wordpress.com/2012/09/12/dicas-sobre-o-banco-de-dados-do-protheustotvs/

1/9

7/4/2014

6.
7.

8.
9.
10.

11.
12.
13.
14.
15.
16.

Dicas sobre o banco de dados do Protheus(Totvs) | 4SQLServer - Marcel Inowe

empresa que aquela tabela pertence e o ltimo caractere reservado ao sistema, por exemplo a
tabela de cliente da empresa 01 a SA1010, da empresa 02 a SA1020 onde SA1 a famlia da
tabela, 01 e 02 representa a empresa e o 0 no final reservado. Como assim famlia ? Exemplo,
cliente SA1, fornecedor SA2 e assim por diante;
O campo chave primaria das tabelas sempre o mesmo, ou seja, todas as tabelas tem um campo
chamado R_E_C_N_O_ que auto-incrementado pelo Top Connect e que a PK das tabelas;
Os registros das tabelas nunca so deletados fisicamente. Todas as tabelas contm um campo
chamado D_E_L_E_T_ e quando algum exclu um registro no banco esse campo preenchido
com um *, ento sempre que for fazer qualquer select lembrem-se de desprezar os deletados
colocando no where a condio D_E_L_E_T_ = , ou D_E_L_E_T_ <> *. Esse conceito de
excluso lgica vem do DBF;
No existe campo DateTime nas tabelas. Todos os campo data so VARCHAR(8) e nunca so
nulos e so sempre preenchidos com 8 caracteres em branco quando representam que esto
vazios;
Muito cuidado ao criar ndices nas tabelas, pois se voc criar em uma ter que criar em todas,
por exemplo se criar um ndice na tabela de cliente SA1XX0 lembre-se de replicar esse ndice
para as demais tabelas de cliente caso tenha;
O Protheus trabalha com um dicionrio de dados prprio que onde so definidas as tabelas,
campos e ndices ento em uma atualizao de verso feita uma checagem do dicionrio de
dados com a estrutura do banco de dados e tudo que no estiver definido no dicionrio ser
apagado, seja campo, ndice ou tabela, portanto ao criar um ndice utilizado em um trabalho de
Tuning eu aconselho a criar uma rotina que diariamente verifica a existncia desse ndice e ento
caso no exista mais crie-o novamente. Eu costumo colocar tudo dentro do step de um job que
diariamente consulta a sys.indexes pelo nome;
Nunca criei um campo em uma tabela sem antes passar para o dicionrio de dados do Protheus,
pois ao abrir uma tela que use a tabela onde o campo foi criado, essa tela ir travar por no ter o
campo no dicionrio;
O desempenho das consultas no so grande coisa, pois a maioria dos desenvolvedores Protheus
no tem grandes habilidades e conhecimento sobre indexao, ento sempre bom dar uma
checada nas consultas mais lentas e dar um help para a galera de desenvolvimento;
Uma forma de ganhar desempenho no banco a compresso de dados a nvel de pgina se for
SQL Server Enterprise;
Os bancos geralmente so enormes ento vlido pensar em uma estratgia de particionamento
das tabelas;
ndices no usados e duplicados h muitos, ento vlido analisar isso e repassar para os
desenvolvedores. Nunca apague um ndice sem antes apagar no dicionrio, pois as telas fazem
essa verificao tambm em sua abertura;
O Top Connect no funciona em cluster e como preciso instal-lo no mesmo servidor do banco
de dados, no ser possvel colocar ele no Service and Application do Cluster e quando ocorrer
um Failover ser necessrio reiniciar o servidor de licena que fica geralmente em outro servidor,
seno ele no voltar ao ar e a aplicao no abrir.

Bom galera espero que essas dicas sejam teis para todos. Conforme eu for me lembrando de mais
coisas eu vou postanto.
At mais.

http://4sqlserver.wordpress.com/2012/09/12/dicas-sobre-o-banco-de-dados-do-protheustotvs/

2/9

7/4/2014

Dicas sobre o banco de dados do Protheus(Totvs) | 4SQLServer - Marcel Inowe

About these ads (http://en.wordpress.com/aboutthese-ads/)


Blusa feminina bicolorPor R$19,99.
Frete Grtis Brasil* e at 100 dias para pagar
no Carto Marisa*!ConfiraR$ 19,99Neu

Blusa feminina frente nicaPor R$5,99.


Frete Grtis Brasil* e at 100 dias para pagar
no Carto Marisa*!Confira-57%R$ 5,99R$

13,99

Legging feminina com recortesPor

Sobre Marcel Inowe


Apaixonado por programao e banco de dados. DBA SQL Server e programador T-SQL
Visualizar todos os posts por Marcel Inowe

30 Respostas para Dicas sobre o banco de dados


do Protheus(Totvs)
Mateus diz : 13 de setembro de 2012 s 16:50
Vale lembrar que ndices criados pelo microsiga no utilizam o INCLUDE e, por isso, ao analisar
planos de execues das consultas a presena de KEY LOOKUPS muito comum. sempre
vlido identificar e reduzir os key lookups com ndices cobertos.
RESPOSTA
silasmendes diz : 25 de setembro de 2012 s 13:24
Dicas preciosas amigo!
RESPOSTA
Alexandre Thiel diz : 4 de janeiro de 2013 s 9:20
Marcel,
Aquela parte onde voc diz: se a empresa tiver 1 matriz e 9 filiais o banco de dados ter 10
tabelas para funcionrio, 10 tabelas para cliente, 10 tabelas para produto e assim
suscetivamente no est correta.
O controle de filiais feito dentro das tabelas, logo, uma empresa com 9 filiais (se forem
cadastradas no sistema como filiais) ter apenas uma tabela para cada cadastro.
Agora se forem 10 empresas, ai sim, teremos 10 tabelas diferentes para cada cadastro.
http://4sqlserver.wordpress.com/2012/09/12/dicas-sobre-o-banco-de-dados-do-protheustotvs/

3/9

7/4/2014

Dicas sobre o banco de dados do Protheus(Totvs) | 4SQLServer - Marcel Inowe

Abrao,
Alexandre Thiel
RESPOSTA
Marcel Inowe diz : 8 de janeiro de 2013 s 8:35
Alexandre obrigado pela dica. Voc est certo, eu me equivoquei na minha colocao.
Abraos.
RESPOSTA
Bruno diz : 6 de agosto de 2013 s 22:40
Marcel, parabns pelo post!
Apenas uma correo, agora na verso 11 do Protheus podemos usar o novo conceito de
empresa, unidade de negcio e filial, e dependendo da configurao podemos ter 10
empresas, 10 filiais para cada empresa e ainda assim utilizar uma nica tabela, se for
conveniente. O tratamento de compartilhamento entre filiais e empresas fica no campo
_FILIAL da tabela.
Abs
Marcel Inowe diz : 12 de setembro de 2013 s 16:13
Boa tarde Bruno, primeiramente obrigado pelo seu comentrio.
Muito bom saber que na verso 11 d para fazer isso. Basta saber se os consultores
Protheus vo usar esse recurso.
Abraos
Luiz Carlos diz : 27 de julho de 2013 s 22:36
Na verso 11 do Protheus isso j foi tratado, as tabelas podem ser compartilhadas em trs
nveis e cada jogo de tabelas se d pela criao de um grupo de empresas, ou seja, mesmo
tendo vrias empresas e em vrios segmentos, voc ainda poder estar trabalhando no
mesmo jogo de tabelas.
RESPOSTA
Mrcio Lenharo diz : 24 de maro de 2013 s 22:32
Marcel, Boa noite!
Vc citou acima sobre estratgia de particionamento das tabelas, minhas perguntas so:
O particionamento do SQL Server compatvel como o DBAccess?
Existe algum procedimento especial ou diferente para aplicar o particionamento no caso do
Protheus?
Qual estratgia recomenda?
Obrigado.
RESPOSTA
Marcel Inowe diz : 26 de maro de 2013 s 7:48
http://4sqlserver.wordpress.com/2012/09/12/dicas-sobre-o-banco-de-dados-do-protheustotvs/

4/9

7/4/2014

Dicas sobre o banco de dados do Protheus(Totvs) | 4SQLServer - Marcel Inowe

Oi Marcio, obrigado pelo seu comentrio.


Respondendo suas perguntas, vamos l:
1. O particionamento compatvel sim com o DBAccess, pois isso transparente para quem
est acessando as tabelas no SQL Server.
2. No h procedimento especial algum no Protheus.
3. complicado recomendar uma estratgia sem ter o conhecimento do teu ambiente, mas
normalmente eu particiono as tabelas de forma que procuro deixar em uma partio os
dados que so mais acessados atualmente e em outras parties os dados que j no so to
mais acessados, por exemplo, se fosse uma tabela de contas a receber eu deixaria os dados de
2012 para frente em uma nica partio e de 2012 para trs cada ano em uma partio, mas
isso depende muito de cada caso, isso foi somente um exemplo. A vantagem do
particionamento que voc pode colocar cada partio em discos diferentes.
Abs
RESPOSTA
Alexandre diz : 26 de maro de 2013 s 8:40
Bom dia, to procurando alguem que tenha o dicionario de dados completo microsiga protheus
para fazer uma integraao com outro software vc consegue me arrumar?
RESPOSTA
Marcel Inowe diz : 26 de junho de 2013 s 20:11
Infelizmente no tenho. Obrigado pelo comentrio.
RESPOSTA
Cesar diz : 20 de maio de 2013 s 21:46
Realmente utilizao de recursos de banco de dados est a 30 anos luz de distncia do Protheus.
Qualquer programinha de fundo de quintal no usa mais a arcaica tecnologia dos DBF, com os
ndices muito mal planejados que esse sistema tem.
A nica vantagem pra mim que como tem muita gente que usa, tem mais gente pra trocar
experincia (no que isso seja uma enorme vantagem).
Pra mim, a nica razo desse sistema, que lento e sempre d pau nas atualizaes, ainda
existir, porque os dinossauros que o desenvolvem tm preguia de aprender outra linguagem e
so arrogantes quando dizemos que eles esto ultrapassados Infelizmente, o dinheiro a mola
que move o mundo
RESPOSTA
Marcel Inowe diz : 26 de junho de 2013 s 20:13
Cesar, certa vez um vendedor da Totvs me confessou que o que os fazem vender o sistema
a possibilidade do cliente customizar da forma que desejar, desde que tenha programadores.
No discordo de nada que falou no comentrio, s uma ressalva de que eu conheo alguns
consultores Protheus gente fina!
Obg pelo comentrio!
RESPOSTA
Luiz Carlos diz : 27 de julho de 2013 s 22:39
Gostaria de conhecer um sistema que no d problemas em uma atualizao
http://4sqlserver.wordpress.com/2012/09/12/dicas-sobre-o-banco-de-dados-do-protheustotvs/

5/9

7/4/2014

Dicas sobre o banco de dados do Protheus(Totvs) | 4SQLServer - Marcel Inowe

RESPOSTA
Marcos A. Becker diz : 8 de junho de 2013 s 11:47
Ola Marcel,
j trabalho com vrios bancos de dados h alguns anos e estou comeando a explorar o
Protheus, suas dicas foram preciosas, muito obrigado.
MBecker
RESPOSTA
Marcel Inowe diz : 26 de junho de 2013 s 20:13
Marcos, fico feliz que foram teis para voc. Se tiver algum assunto que queira que eu
aborde s avisar.
Abs
RESPOSTA
Larissa diz : 12 de setembro de 2013 s 15:38
Para utilizar o Microsiga Photheus, meu banco de dados pode ser em Microsoft SQL Server?
RESPOSTA
Marcel Inowe diz : 12 de setembro de 2013 s 16:11
Boa tarde Larissa, primeiramente obrigado pelo seu comentrio.
O Protheus um ERP que pode ser utiliza com todos os bons bancos de dados existentes no
mercado. Eu no sou um especialista em Protheus mas pelo que me lembre pode-se usar com
SQL Server, Oracle, DB2, PostgreSQL e MySQL, posso estar enganado mas acho que
suporta Firebird e ainda suporta DBF.
Abraos
RESPOSTA
Wyllian diz : 10 de dezembro de 2013 s 16:52
Marcel, muito bom seu artigo.
Mas em resposta ao comentrio do dia 12 de Setembro 2013, apesar de poder utilizar o
MySQL, o mesmo no homologado para o uso da aplicao do Protheus e sim somente
para o uso do Portal que faz integrao com o SEFAZ (para emisso das NF eletronicas).
J em reposta ao Cesar no dia 20 de Maio de 2013, eu trabalho a quase 10 anos com o
Totvs Protheus desde a verso 6.09. Passei por bancos DBF, CTREE, DB2 e SQL Server.
E digo o seguinte: sim o sistema tem uma base antiguada, sim as atualizaes causam
uma certa dor de cabea, mas descordo da lentido e de alguns problemas de
atualizaes gerar novos Bugs do sistemas pois se isso acontece pelo simples motivo do
cliente ao solicitar customizao ou ter feito ela sem um acompanhamento adequado.
acabou incompatibilizando o sistema.
Vejo que nos ltimos 2 anos quando surgiu a vero 11 do Protheus, o pessoal da Totvs j
comeou a aplicar novos conceitos, mas claro tudo aos poucos. No adianta querer
alterar toda uma estrutura funcional de uma hora para outra, pois isso um tiro no p.
Tenho F ainda que vai ficar bom mesmo com uma linguagem como o ADVPL
(CLIPPER avanado).
http://4sqlserver.wordpress.com/2012/09/12/dicas-sobre-o-banco-de-dados-do-protheustotvs/

6/9

7/4/2014

Dicas sobre o banco de dados do Protheus(Totvs) | 4SQLServer - Marcel Inowe

Leo Nardo diz : 28 de novembro de 2013 s 23:29


Prezado
No seu tpico 15, algumas consideraes que gostaria de fazer, e o farei Me corrija se eu
estiver errado.
O Top Connect no funciona em cluster = Funciona SIM !!! O TOTVSDBACESS
e como preciso instal-lo no mesmo servidor do banco de dados = Nao precisa necessariamente
instalar no mesmo servidor do banco (a boa pratica seria instalar em servidor a parte para um
melhor desempenho)
e quando ocorrer um Failover ser necessrio reiniciar o servidor de licena que fica geralmente
em outro servidor, seno ele no voltar ao ar e a aplicao no abrir. = Existe o HARDLOCK
CLONE que deve ser instalado no outro servidor e no precisa reiniciar o servidor de licena !!!
S para corrigir seu timo tpico E como eu disse se eu estiver errado me corrija.
Abcos
RESPOSTA
Marcel Inowe diz : 10 de janeiro de 2014 s 9:07
Oi Leonardo eu consultei diversos consultores Totvs e todos eles me garantiram que o
TopConnect no funciona em Cluster pois ele no um servio clusterizvel, porm agora
eu fiquei em dvida. Para o TopConnect funcionar em Cluster tem que ter a opo de dar
um nome fictcio na rede para ele como acontece com o SQL Server e eu nunca achei essa
opo, pois assim ao configurar o Microsiga voc apontaria para esse nome fictcio de rede
que seria o nome que foi dado ao cluster do TopConnect. Vo j instalou o TopConnect em
Cluster e o mesmo fez o Failover automtico com nome de rede fictcio? Se voc j fez isso
gostaria que compartilhasse conosco, pois ser timo!
Abs
RESPOSTA
leonsoft diz : 10 de janeiro de 2014 s 19:11
Bem Vou dizer como eu fiz pra meu protheus, banco, licena e dbaccess funcionar com
fail over.
Coloquei cada servio em uma VM. Se qq servidor cair a VM com Live migration assume
o controle. O conceito q usei pra cluster foi este ok?
leonsoft diz : 10 de janeiro de 2014 s 19:18
Prezado vou dizer como eu fiz pra no ter dor de cabea com protheus, banco, licena e
dbaccess. Pra cada servio tenho uma VM. Se uma delas falha o Live migration do hiper
V transfere o controle para a VM do outro servidor. Foi este o conceito q utilizei para
cluster ok?
Marcel Inowe diz : 13 de janeiro de 2014 s 8:50
Leonardo obrigado pela sua interao. Essa sua soluo muito interessante mas no o
Cluster que eu me refiro. Eu me refiro ao servio do TopConnect funcionar sob o
WSFC(Windows Server Failover Cluster), ou seja, deu algum problema em um dos ns o WSFC
move o servio para o outro n automaticamente.
http://4sqlserver.wordpress.com/2012/09/12/dicas-sobre-o-banco-de-dados-do-protheustotvs/

7/9

7/4/2014

Dicas sobre o banco de dados do Protheus(Totvs) | 4SQLServer - Marcel Inowe

Abs
RESPOSTA
Kayo Hamid diz : 13 de maro de 2014 s 14:23
Opa Marcel, estava precisando dessas informaes.
Quero efetuar uma replicao entre matriz e filiais, como vc disse que cada filial tem sua tabela,
isso seria moleza.
A questo fica em como eu faria o TOTVS App Server rodar na filial, vc tem alguma informacao
para me passar nesse ponto? O TOTVS App Server eu vi que trabalha balanceado, mas cada
um pode acessar um banco de dados diferente ?
No caso eu poderia colocar um TOTVS App Server na filial acessando o banco replicado da
filial?
Abraos.
RESPOSTA
Marcel Inowe diz : 13 de maro de 2014 s 14:51
Oi Kayo obrigado pelo feedback. Na poca que estava atuando constantemente eu no me
recordo de nenhum servio chamado Totvs App Server, me lembro do Top Connect. Seria o
mesmo? S um adendo que cada empresa tem sua tabela e no cada filial, eu achei que eu
j tinha corrigido, mas fui ver agora e ainda est escrito Filial. Me desculpe! Se o Totvs App
Server for o mesmo que o Top Connect basta instal-lo na filial desde que voc tenha a
licena, ele ir funcionar perfeitamente, porm atente-se com ambiente Protheus e replicao
que o caso da auto numerao do campo R_E_C_N_O_, pois ele chave primria das
tabelas e quem enumera ele o Top Connect e no o banco de dados, ento se a tua
replicao for bi-direcional no caso da merge ou peer-to-peer isso lhe trar enormes
problemas.
RESPOSTA
Kayo Hamid diz : 13 de maro de 2014 s 15:16
Marcel valeu pela resposta, eu acho que o Top Connect que vc se refere hoje o DBAcess,
d uma olhada em: http://gilbertofurtado.wordpress.com/2011/02/02/instalando-econfigurando-protheus10-sql-server-no-windows/
Marcel Inowe diz : 13 de maro de 2014 s 15:33
Realmente o top que eu me refiro o DBAccess.
Abraos

Trackbacks / Pingbacks
1. Dicas sobre o banco de dados do Protheus(Totvs) Alex Souza - 21 de setembro de 2012
2. 5 motivos para quem utiliza o Protheus (Totvs) contratar um DBA SQL Server |
Fabrcio Lima - 14 de dezembro de 2013

http://4sqlserver.wordpress.com/2012/09/12/dicas-sobre-o-banco-de-dados-do-protheustotvs/

8/9

7/4/2014

Dicas sobre o banco de dados do Protheus(Totvs) | 4SQLServer - Marcel Inowe

4SQLServer Marcel Inowe


Blog no WordPress.com. O tema Skeptical.
Seguir

Seguir 4SQLServer - Marcel Inowe


Tecnologia WordPress.com

http://4sqlserver.wordpress.com/2012/09/12/dicas-sobre-o-banco-de-dados-do-protheustotvs/

9/9