"Contagem de bloqueios de compartilhamento de arquivos excedida..." erro durante processamento de transações grandes

Sintomas

Quando um ou mais usuários processam muitas transações em um ambiente de vários usuários, as transações podem falhar com a seguinte mensagem de erro:

Contagem de bloqueios de compartilhamento excedida. Aumente a entrada de registro MaxLocksPerFile.

Causa

O erro ocorrerá se o número de bloqueios necessários para executar uma transação exceder o número máximo de bloqueios por arquivo.

Solução alternativa

Importante esta seção, este método ou a tarefa contém etapas que explicam como modificar o registro. No entanto, problemas graves poderão ocorrer se você modificar o registro incorretamente. Portanto, certifique-se de seguir essas etapas cuidadosamente. Para mais proteção, faça o backup do registro antes de modificá-lo. Em seguida, você poderá restaurar o registro se ocorrer um problema. Para obter mais informações sobre como fazer backup e restaurar o registro, clique no número abaixo para ler o artigo na base de dados de conhecimento da Microsoft:

322756 como fazer backup e restaurar o registro no Windows

Para contornar esse problema, aumente o número máximo de bloqueios por arquivo. Para fazer isso, use um dos seguintes métodos.

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

  1. Clique em Iniciar e, em seguida, em Executar.

  2. Digite regedit e clique em OK.

  3. 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 que está 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 de conectividade do Engine\Engines\ACE

      No Microsoft Office Access 2007 que está 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 de conectividade do Engine\Engines\ACE

    • No Microsoft Access 2010 que está 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\14.0\Access de conectividade do Engine\Engines\ACE

      No Microsoft Office Access 2010 que está 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\14.0\Access de conectividade do Engine\Engines\ACE

    • No Microsoft Access 2013 que está 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\15.0\Access de conectividade do Engine\Engines\ACE

      No Microsoft Office Access 2013 que está 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\15.0\Access de conectividade do Engine\Engines\ACE

    • No Microsoft Access 2016 que está 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\16.0\Access de conectividade do Engine\Engines\ACE

      No Microsoft Office Access 2016 que está 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\16.0\Access de conectividade do Engine\Engines\ACE

  4. No painel direito do editor do registro, clique duas vezes em MaxLocksPerFile.

  5. Na caixa de diálogo Editar valor DWORD , clique em decimal.

  6. Modifique o valor da caixa dados de valor conforme necessário e clique em OK.

Observe que esse método altera a configuração do registro para todos os aplicativos que usam o mecanismo de banco de dados do Microsoft Jet versão 4,0.

Método 2: Use o método SetOption para alterar temporariamente a MaxLocksPerFile

Observação

O código de exemplo neste artigo usa o Microsoft Data Access Objects. Para que esse código seja executado corretamente, você deve fazer referência à biblioteca de objetos do Microsoft DAO 3,6. Para fazer isso, clique em referências no menu ferramentas no editor do Visual Basic e certifique-se de que a caixa de seleção biblioteca de objetos do Microsoft DAO 3,6 está marcada.

O método SetOption substitui temporariamente o número padrão de bloqueios por arquivo. Você define o número padrão de bloqueios por arquivo quando define a chave do registro MaxLocksPerFile. Você define o 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, siga estas etapas:

  1. Abra o Microsoft Access.
  2. Abra um banco de dados e, em seguida, pressione ALT + F11 para iniciar o editor do Visual Basic.
  3. Na janela Microsoft Visual Basic-<nome do banco de dados<>-[nome do módulo> (código)] , clique em janela imediata no menu Exibir .
  4. Em janela imediata, digite o código a seguir.

DAO. DBEngine. SetOption dbmaxlocksperfile, 15000 5. Pressione a tecla ENTER para executar a linha de código.

Observação Isso define temporariamente o valor MaxLocksPerFile como 15.000.

Para processar transações grandes, defina o valor de MaxLocksPerFile para atender às suas necessidades e, em seguida, execute as transações na sessão.

As alterações feitas na configuração MaxLocksPerFile usando o método SetOption estão disponíveis apenas para a sessão atual.

Mais informações

A configuração MaxLocksPerFile determina o número máximo de bloqueios do Microsoft Jet em relação a um arquivo. O valor padrão de MaxLocksPerFile é 9.500. No entanto, não altere esse valor se estiver trabalhando em um servidor Novell NetWare, porque o máximo de bloqueios de registro do servidor por conexão é de 10.000.