Mensagem de erro "Contagem de bloqueio de partilha de ficheiros excedida…" durante o processamento de grandes transacções

O suporte para o Office 2003 terminou

A Microsoft terminou o suporte para o Office 2003 em 8 de Abril de 2014. Esta alteração afetou as suas atualizações de software e opções de segurança. Aprenda o que isto significa para si e como pode ficar protegido.

Importante: este artigo contém informações sobre como modificar o registo. Certifique-se de que cria uma cópia de segurança do registo antes de o modificar. Certifique-se de que sabe como restaurar o registo se ocorrer um problema. Para mais informações sobre como efectuar uma cópia de segurança, restaurar e modificar o registo, clique no número de artigo que se segue para visualizar o artigo na Base de Dados de Conhecimento da Microsoft:
322756 Como fazer cópias de segurança, editar e restaurar o registo no Windows XP e no Windows Server 2003
Sintomas
Quando um ou mais utilizadores processam muitas transacções num ambiente de multiutilizador, as transacções poderão falhar com a seguinte mensagem de erro:
Contagem de bloqueio de partilha de ficheiros excedida. Aumente a entrada de registo MaxLocksPerFile.
Causa
O erro ocorre se o número de bloqueios necessários para efectuar uma transacção exceder o número máximo de bloqueios por ficheiro.
Como contornar
Aviso: poderão ocorrer problemas graves se modificar o registo de forma incorrecta utilizando o Editor de Registo ou qualquer outro método. Estes problemas poderão forçar a reinstalação do sistema operativo. A Microsoft não garante que estes problemas possam ser resolvidos. Todo e qualquer risco decorrente da modificação do registo é da responsabilidade do utilizador.

Para contornar este problema, aumente o número máximo de bloqueios por ficheiro. Para tal, utilize um dos métodos que se seguem.

Método 1: Definir a chave de registo como MaxLocksPerFile para aumentar o número máximo de bloqueios por ficheiro

  1. Clique em Iniciar e, em seguida, clique em Executar.
  2. Escreva regedit e clique em OK.
  3. Utilize o método adequado:
    • No Microsoft Access 2000, no Microsoft Access 2002 e no Microsoft Office Access 2003 num sistema operativo Windows de 32 bits, utilize o Editor de Registo para localizar a seguinte chave de registo:
      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 num sistema operativo Windows de 64 bits, utilize o Editor de Registo para localizar a seguinte chave de registo:
      HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\Jet 4.0
    • No Microsoft Office Access 2007 num sistema operativo Windows de 32 bits, utilize o Editor de Registo para localizar a seguinte chave de registo:
      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Access Connectivity Engine\Engines\ACE

      No Microsoft Office Access 2007 num sistema operativo Windows de 64 bits, utilize o Editor de Registo para localizar a seguinte chave de registo:
      HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\12.0\Access Connectivity Engine\Engines\ACE
  4. No painel da direita do Editor de Registo, faça duplo clique em MaxLocksPerFile.
  5. Na caixa de diálogo Editar valor DWORD, clique em Decimal.
  6. Modifique o valor da caixa Dados do valor conforme necessário e clique em OK.
Nota: este método altera a definição de registo do Windows para todas as aplicações que utilizam o motor de base de dados Microsoft Jet versão 4.0.

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

Nota: o código de exemplo deste artigo utiliza Microsoft Data Access Objects. Para que este código seja executado correctamente, tem de referenciar a biblioteca Microsoft DAO 3.6 Object Library. Para o fazer, clique em References no menu Tools do Editor do Visual Basic e certifique-se de que a caixa de verificação Microsoft DAO 3.6 Object Library está seleccionada.

O método SetOption substitui temporariamente o número predefinido de bloqueios por ficheiro. O número predefinido de bloqueios por ficheiro é definido quando define a chave de registo MaxLocksPerFile. O novo valor é definido utilizando o método SetOption. O novo valor é válido até fechar o objecto DBEngine. Para utilizar o Método 2, siga estes passos:
  1. Abra o Microsoft Access.
  2. Abra uma base de dados e prima Alt+F11 para iniciar o editor do Visual Basic.
  3. Na janela Microsoft Visual Basic -<Nome da Base de Dados>-[<Nome do Módulo> (Código)], clique em Immediate Window no menu View.
  4. Em Immediate Window, introduza o seguinte código.
    DAO.DBEngine.SetOption dbmaxlocksperfile,15000
  5. Prima a tecla ENTER para executar a linha de código.

    Nota: isto define temporariamente o valor MaxLocksPerFile como 15.000.
Para processar grandes transacções, defina o valor MaxLocksPerFile de forma a satisfazer os seus requisitos e execute as transacções na sessão.

As alterações efectuadas à definição MaxLocksPerFile utilizando o método SetOption só estarão disponíveis para a sessão actual.
Mais Informação
A definição MaxLocksPerFile determina o número máximo de bloqueios do Microsoft Jet num ficheiro. O valor predefinido de MaxLocksPerFile é 9.500. No entanto, não altere este valor se estiver a trabalhar num servidor Novell NetWare, porque o máximo de bloqueios de registo do servidor por ligação é de 10.000. Para mais informações, clique no número de artigo que se segue para visualizar o artigo na Base de Dados de Conhecimento da Microsoft:
305995 Erro "3050 Não foi possível bloquear o ficheiro" quando liga a uma base de dados Jet num servidor Novell
Referências
Para mais informações, consulte os seguintes artigos da Base de Dados de Conhecimento da Microsoft:
198633 Recebe uma mensagem de erro "Contagem de bloqueio de partilha de ficheiros excedida" quando sincroniza duas réplicas no Access 2000
209940 Mensagem de erro "Não existe espaço em disco ou memória suficiente" quando efectua uma operação numa tabela do Access 2000
ACC2003 ACC2007
Propriedades

ID do Artigo: 815281 - Última Revisão: 02/22/2008 12:27:44 - Revisão: 8.1

  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
  • Microsoft Access 2000 Standard Edition
  • kberrmsg kbregistry kbprb KB815281
Esta informação foi útil?