USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  BLOQUEIO DE REGISTROS
LCRamos
Pontos: 2843
GOIANIA
GO - BRASIL
ENUNCIADA !
Postada em 13/02/2012 09:34 hs            
Amigos, preciso efetuar uma alteração de tamanho de um campo no Access2003, via código, e como tem mais de 100.000 registros, ele me dá a mensagem:
"Contagem de registros de compartilhamento excedida. Aumente a entrada de registros MaxLocksPerFile".
Tentei efetuar interativamente, mas diz não ter memória suficiente.
Como resolvo isto?

vlu//
   
Treze
Pontos: 2843 Pontos: 2843
SÃO VICENTE
SP - BRASIL
Postada em 13/02/2012 10:25 hs            
ramos realmente esta alteração vai consumir a memória inteira mesmo, o que eu posso sugerir é vc paginar esta atualização.

ou seja dentro de um loop que vc deve estar usando coloque um contador, para fazer tipo 50 a 50... assim vc poderá fazer uma quantidade suportada, descarregar a memória, e depois fazer outra quantidade.
     
Treze
Pontos: 2843 Pontos: 2843
SÃO VICENTE
SP - BRASIL
ENUNCIADA !
Postada em 13/02/2012 10:29 hs            
ou

Aviso O uso incorreto do Editor do Registro, ou outro método, pode causar sérios problemas. Estes problemas talvez exijam a reinstalação do sistema operacional. A Microsoft não garante que os problemas resultantes do uso incorreto do Editor de Registro possam ser solucionados. A modificação do Registro é de sua responsabilidade.

Para solucionar esse problema, aumente o número máximo de bloqueios por arquivo. Para fazer isso, use um dos seguintes métodos.
Voltar para o início

Método 1: Configurar a chave do Registro para MaxLocksPerFile para aumentar o número máximo de bloqueios por arquivo

Clique em Iniciar e em Executar.

Digite regedit, e clique em OK.

Use o método apropriado:
No Microsoft Access 2000, no Microsoft Access 2002 e no Microsoft Office Access 2003 que estão sendo executados em um sistema operacional Windows de 32 bits, use o Editor do Registro para localizar a seguinte chave do Registro:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Jet 4.0

No Microsoft Access 2000, no Microsoft Access 2002 e no Microsoft Office Access 2003 que estão sendo executados em um sistema operacional Windows de 64 bits, use o Editor do Registro para localizar a seguinte chave do Registro:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\Jet 4.0
No Microsoft Office Access 2007 sendo executado em um sistema operacional Windows de 32 bits, use o Editor do Registro para localizar a seguinte chave do Registro:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Access Connectivity Engine\Engines\ACE

No Microsoft Office Access 2007 sendo executado em um sistema operacional Windows de 64 bits, use o Editor do Registro para localizar a seguinte chave do Registro:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\12.0\Access Connectivity Engine\Engines\ACE
No painel à direita da janela do Editor do Registro, clique duas vezes em MaxLocksPerFile.
Na caixa de diálogo Editar valor DWORD, clique em Decimal.
Modifique o valor da caixa Dados do valor conforme necessário e clique em OK.
Observação Este método altera as configurações do Registro do Windows para todos os aplicativos que usam o Microsoft Jet database engine versão 4.0.


Método 2: Usar o método SetOption para alterar temporariamente MaxLocksPerFile
Observação O código de exemplo neste artigo usa o Microsoft Data Access Objects. Para este código ser executado corretamente, é necessário referenciar a biblioteca Microsoft DAO 3.6 Object Library. Para fazer isto, clique em Referências no menu Ferramentas no Editor do Visual Basic e verifique a caixa de seleção Microsoft DAO 3.6 Object Library está marcada.

O método SetOption temporariamente sobrepõe o número padrão de bloqueios por arquivo. Você configura o número padrão de bloqueios por arquivo quando configura a chave de Registro MaxLocksPerFile . Você define um novo valor usando o método SetOption. O novo valor é válido até que você feche o objeto DBEngine. Para usar o Método 2, execute as seguintes etapas:

Abra o Microsoft Access.
Abra o banco de dados e pressione Alt+F11 para iniciar o editor do Visual Basic.
Na janela Microsoft Visual Basic -<Nome do Banco de dados>-[<Nome do Módulo> (Código)], clique em Immediate Window no menu Exibir.
Em Immediate Window, digite o seguinte código.
DAO.DBEngine.SetOption dbmaxlocksperfile,15000
Pressione a tecla ENTER para executar a linha de código.

Observação Isto define temporariamente o valor de MaxLocksPerFile para 15.000.
Para processar uma grande quantidade de transações, defina o valor de MaxLocksPerFile conforme a sua necessidade e então execute as transações na sessão.

As alterações feitas nas definições de MaxLocksPerFile usando o método SetOption estão disponíveis somente para a sessão atual.
TÓPICO EDITADO
 
LCRamos
Pontos: 2843
GOIANIA
GO - BRASIL
Postada em 13/02/2012 10:41 hs            
Beleza amigo, já tinha visto o tópico do Rdegedit, mas não queria mexer, com a opção SetOption, deu certo.
Treze você é o cara, nem sei mais quantas te devo.
Obrigado amigo.

vlu//
     
LCRamos
Pontos: 2843
GOIANIA
GO - BRASIL
Postada em 15/02/2012 06:19 hs            
Treze, veja só, descobri que o padrão é 9.000, mas isto não significa número de registros, tem algo a ver com memória, coloquei 15.000 ele processou 100.000 registros, mas em um banco com 179.000 registros ele dá o mesmo erro, aumentei pra 20.000 não dá certo, coloquei os 180.000 para verificar se eram registros, e também não deu certo.
Sabe o que pode ser?

vlu//
     
Treze
Pontos: 2843 Pontos: 2843
SÃO VICENTE
SP - BRASIL
ENUNCIADA !
Postada em 15/02/2012 09:16 hs            
tente 1000000 (hum milhao)
   
Página(s): 1/2      PRÓXIMA »


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2026   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página