Artigo: 815281 - Última revisão: sexta-feira, 22 de Fevereiro de 2008 - Revisão: 8.1

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

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
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  (http://support.microsoft.com/kb/322756/ ) Como fazer cópias de segurança, editar e restaurar o registo no Windows XP e no Windows Server 2003

Nesta página

Expandir tudo | Reduzir tudo

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  (http://support.microsoft.com/kb/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  (http://support.microsoft.com/kb/198633/ ) Recebe uma mensagem de erro "Contagem de bloqueio de partilha de ficheiros excedida" quando sincroniza duas réplicas no Access 2000
209940  (http://support.microsoft.com/kb/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

A informação contida neste artigo aplica-se a:
  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
  • Microsoft Access 2000 Standard Edition
Palavras-chave: 
kberrmsg kbregistry kbprb KB815281