Artigo: 173006 - Última revisão: sábado, 20 de Janeiro de 2007 - Revisão: 3.1

ACC: "contagem de bloquear partilha de ficheiros" erro durante a sincronização

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 editar o registo. Antes de editar o registo, deve efectuar primeiro uma cópia de segurança dos ficheiros de registo (System.dat e User.dat). Ambos são ficheiros ocultos na pasta Windows.

Avançado: Requer conhecimentos avançados sobre codificação, interoperabilidade e multi-utilizador.

Nesta página

Expandir tudo | Reduzir tudo

Sintomas

Quando sincronizar duas réplicas, poderá receber a seguinte mensagem de erro:
A sincronização entre '<Replica1.mdb>' e '<Replica2.mdb>' falhou.

Contagem de bloqueio de partilha de ficheiros excedida (erro 3052).
O erro também poderá ocorrer quando executa um procedimento Visual Basic for Applications que utiliza o método sincronizar.

Causa

Um membro do conjunto de réplicas contém demasiadas alterações para a sincronização ser concluída com êxito. Por exemplo, se uma das réplicas aumentou de tamanho por 100 megabytes (MB) porque tiver adicionado um grande número de novos registos, poderá receber este erro. A réplica que contém demasiadas alterações pode estar a base de dados a partir do qual está a tentar sincronizar ou, pode também ser outro membro do conjunto de réplicas.

Resolução

Se estiver a utilizar o Microsoft Access 97, pode tirar partido de uma nova funcionalidade que permite aumentar a definição de MaxLocksPerFile para o motor de base de dados Microsoft Jet 3.5, editando o registo do Windows. O valor predefinido desta definição é 9500. No entanto, alterar este valor não é recomendada se das réplicas estiver localizada num servidor Novell NetWare porque bloqueios de máximo de registos do servidor por ligação é 10000. Além disso, alterar este valor irá resultar num fraco desempenho se uma das réplicas está localizada num servidor com o Windows NT versão 3.51 ou versão anterior. Se ambas as réplicas estiverem localizadas em servidores com o Microsoft Windows NT versão 4.0 ou Microsoft Windows 95, o valor máximo desta definição é limitado apenas pelos recursos disponíveis.

Aviso: Modificações efectuadas no registo do sistema são consideradas utilização avançada de sistemas operativos do Windows 95 ou Windows NT. Deve ser retirado cuidado extremo quando efectuar modificações. Quaisquer entradas inválidas ou incorrectas podem inutilizar o sistema operativo.

Aviso: A utilização incorrecta do Editor de registo pode provocar problemas graves que poderão forçar a reinstalação do Windows 95. Microsoft não garante que os problemas resultantes da utilização incorrecta do Editor de registo possam ser resolvidos. As suas próprias risco da utilização do Editor de registo.

Para obter informações sobre como editar o registo, consulte o tópico de ajuda Alterar chaves e valores no Editor de registo (Regedit.exe). Tenha em atenção que deve efectuar uma cópia de segurança dos ficheiros de registo (System.dat e User.dat) antes de editar o registo.
  1. Saia do Microsoft Access.
  2. Clique no botão Iniciar e, em seguida, clique em executar.
  3. Na caixa Abrir, escreva regedit .
  4. Localize a pasta de registo HKEY_LOCAL_MACHINE.
  5. Expanda a pasta HKEY_LOCAL_MACHINE até localizar a pasta SOFTWARE\Microsoft\Jet\3.5\Engines\Jet 3.5.
  6. Faça duplo clique a pasta de Jet 3.5 para ver o respectivo conteúdo.
  7. Seleccione a entrada MaxLocksPerFile; no menu Editar, clique em modificar.
  8. Na caixa de diálogo Editar valor DWORD, seleccione decimal e aumentar o número na caixa dados do valor.
  9. Clique em OK para guardar a definição MaxLocksPerFile.
  10. Saia do Editor de registo.
  11. Inicie o Microsoft Access e sincronize as réplicas.

Ponto Da Situação

Microsoft confirmou que este problema existe no Microsoft Access 97.

Mais Informação

A definição MaxLocksPerFile permite o motor de base de dados do Microsoft Jet concluir transacções grandes sem exceder um limite de bloqueio de registo especificado. Em vez de exceda este limite, o motor de base de dados Jet divide uma transação em duas ou mais partes; depois de uma parte ter sido consolidada, o motor de base de dados Jet liberta os bloqueios para que podem ser reutilizados. Como resultado, menos bloqueios necessários para concluir a transacção. Isto impede que um servidor Novell NetWare, que limita os bloqueios de registos máximo por ligação 10000, a partir de bloquear quando esse valor for excedido.

No entanto, o motor de base de dados Jet não dividir a transacção quando sincronizar duas réplicas. Se a transacção não pode ser concluída dentro do limite especificado na definição de MaxLocksPerFile, a menos que é dividida em partes, receberá o erro descrito na secção "Sintomas"; a sincronização não ocorre.

Passos para reproduzir o problema

Aviso: Os passos seguintes podem requerem mais espaço livre de 400 MB. O procedimento de exemplo copia uma tabela com uma grande quantidade de dados; executá-lo poderá demorar um longo período de tempo, durante o qual a CPU seria indisponível.
  1. Inicie o Microsoft Access e abra uma nova base de dados em branco.
  2. Crie a seguinte tabela:
          Table: tblTable1
          ---------------------------
          Field Name: ID
             Data Type: Number
             Field Size: Long Integer
          Field Name: Field1
             Data Type: Text
             Field Size: 50
          Field Name: Field2
             Date Type: Text
             Field Size: 50
          Field Name: Field3
             Date Type: Text
             Field Size: 50
          Field Name: Field4
             Date Type: Text
             Field Size: 50
    						
  3. Guarde a tabela como tblTable1. Quando lhe for perguntado se pretende criar um principal chave, clique ' não '.
  4. No menu Ferramentas, aponte para replicação e clique em Criar réplica. Quando lhe for pedido para fechar a base de dados, clique em ' Sim '. Quando lhe for pedido para fazer uma cópia de segurança, clique em ' não '.
  5. Na caixa de diálogo localização da nova réplica, anote o nome ficheiro e localização da nova réplica. Clique em OK.
  6. Clique em OK quando pedido para voltar a abrir a base de dados, está agora a réplica da estrutura global.
  7. Abra um módulo novo e em branco e escreva o seguinte procedimento:
           Function Filler(lngNumRecs As Long)
    
              Dim lngLoopCount As Long
              Dim strFillerString As String
              Dim db As Database
              Dim rs As Recordset
    
              strFillerString = ""
              For lngLoopCount = 1 To 40
                 strFillerString = strFillerString & "x"
              Next lngLoopCount
              Set db = CurrentDb
              Set rs = db.OpenRecordset("tblTable1")
              For lngLoopCount = 1 To lngNumRecs
                 rs.AddNew
                 rs![ID] = lngLoopCount
                 rs![Field1] = strFillerString
                 rs![Field2] = strFillerString
                 rs![Field3] = strFillerString
                 rs![Field4] = strFillerString
                 rs.Update
              Next lngLoopCount
              db.Close
           End Function
    						
  8. Escreva a seguinte linha na janela de depuração:

    ? Filler(500000)

    Note que este procedimento pode demorar muito tempo para ser executado e poderá necessitar de quanto 400 MB de espaço livre em disco.
  9. No menu Ferramentas, aponte para replicação e, em seguida, clique em Sincronizar agora.
  10. Na caixa de diálogo Sincronizar base de dados, clique em OK.
Aparece um indicador de progresso com a mensagem "Sincronizar réplicas", mas, eventualmente, receberá o erro descrito na secção "Sintomas".

Referências

Para obter mais informações sobre a definição MaxLocksPerFile, procurar o índice remissivo da ajuda para "Método SetOption" e visualizar o tópico "SetOption método DAO ()"; deslocar-se para a parte inferior do tópico e clique na hiperligação "Ao inicializar o motor de base de dados Microsoft Jet 3.5."

Para obter mais informações sobre replicação, consulte para o Microsoft Jet 3.5 replicação técnica. Consulte o seguinte artigo na Microsoft Knowledge Base para obter instruções sobre como obter o Microsoft Jet 3.5 replicação branco papel:

164553  (http://support.microsoft.com/kb/164553/EN-US/ ) ACC97: Jet 3.5 replicação técnica disponível no Centro de transferências

A informação contida neste artigo aplica-se a:
  • Microsoft Access 97 Standard Edition
Palavras-chave: 
kbmt kbbug kberrmsg KB173006 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 173006  (http://support.microsoft.com/kb/173006/en-us/ )
Retired KB ArticleExclusão de Responsabilidade para Conteúdo sem Suporte na KB
Este artigo foi escrito sobre produtos para os quais a Microsoft já não fornece suporte. Por conseguinte, este artigo é oferecido "tal como está" e deixará de ser actualizado.