LCRamos
|
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
|
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
|
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
|
|
|
|
|
|
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//
|
|
|
|
|
|
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
|
SÃO VICENTE SP - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 15/02/2012 09:16 hs
tente 1000000 (hum milhao)
|
|
|
|
|