Introdução aos ficheiros de bloqueio (laccdb e ldb) no Access

Introdução

O ficheiro ".laccdb" ou ".ldb" desempenha uma função importante no esquema de vários utilizadores do motor de base de dados do Microsoft Access. O ficheiro ".laccdb" ou ".ldb" é utilizado para determinar quais os registos que estão bloqueados numa base de dados partilhada e por quem. O ficheiro ".laccdb" é utilizado com bases de dados .accdb e o ficheiro ".ldb" é utilizado com bases de dados ".mdb". Ambos os ficheiros ".laccdb" e ".ldb" são conhecidos como ficheiros de bloqueio.

Criação e eliminação automática de ficheiros de bloqueio

Para cada base de dados aberta para utilização partilhada, é criado um ficheiro ".laccdb" ou ".ldb" para armazenar nomes de computador e de segurança e para colocar bloqueios de intervalo de bytes alargados. O ficheiro de bloqueio tem sempre o mesmo nome que a base de dados aberta e está localizado na mesma pasta que a base de dados aberta. Por exemplo, se abrir (para utilização partilhada) a base de dados de exemplo Ventonorte.accdb em C:\users\<username>\documents\, é criado automaticamente um ficheiro com o nome Ventonorte.laccdb na mesma pasta de documentos.

Sempre que o último utilizador fechar uma base de dados partilhada, o ficheiro de bloqueio é eliminado. As únicas exceções são quando um utilizador não tem direitos de eliminação ou quando a base de dados está marcada como danificada. Nesse caso, o ficheiro de bloqueio não é eliminado, porque contém informações sobre quem estava a utilizar a base de dados no momento em que a base de dados foi marcada como danificada.

Privilégios de pasta necessários

Se quiser partilhar uma base de dados, o ficheiro da base de dados deverá estar localizado numa pasta na qual os utilizadores tenham privilégios para ler, escrever, criar e eliminar. Mesmo que queira que os utilizadores tenham privilégios de ficheiro diferentes (por exemplo, alguns só de leitura e alguns de leitura-escrita), todos os utilizadores que partilham uma base de dados têm de ter permissões para ler, escrever e criar para a pasta. No entanto, pode atribuir permissões só de leitura ao ficheiro .accdb ou .mdb a utilizadores individuais, podendo ao mesmo tempo atribuir todas as permissões para a pasta.

Nota

Se um utilizador abrir uma base de dados com acesso exclusivo (ao clicar na seta à direita do botão Abrir e, em seguida, clicar em Abrir em Modo Exclusivo), não é utilizado o bloqueio de registos. Portanto, o Microsoft Access não tenta abrir ou criar um ficheiro de bloqueio. Se a base de dados estiver sempre aberta para utilização exclusiva, um utilizador só precisa de ter privilégios de leitura e escrita para a pasta.

Os conteúdos do ficheiro de bloqueio

Para cada pessoa que abre uma base de dados partilhada, o motor de base de dados do Access escreve uma entrada no ficheiro ".laccdb" ou ".ldb" da base de dados. O tamanho de cada entrada é de 64 bytes. Os primeiros 32 bytes contêm o nome do computador (como JoaoSilva). Os segundos 32 bytes contêm o nome de segurança (como Administrador). O número máximo de utilizadores em paralelo que o motor de base de dados do Access suporta é 255. Por conseguinte, o tamanho do ficheiro de bloqueio nunca é maior do que 16 quilobytes.

Nota

Embora uma solução de servidor de ficheiros possa suportar até 255 utilizadores em simultâneo, se os utilizadores da sua solução adicionarem frequentemente dados e atualizarem dados, é boa ideia que uma solução de servidor de ficheiros do Access não suporte mais do que 25 a 50 utilizadores. Para obter mais informações, consulte Capítulo 1: Compreender o Desenvolvimento de Cliente/Servidor do Microsoft Access 2000.

Quando um utilizador fecha uma base de dados partilhada, a entrada do utilizador não é removida do ficheiro de bloqueio. No entanto, a entrada do utilizador pode ser substituída quando outro utilizador abre a base de dados. Isto significa que não pode utilizar apenas o ficheiro de bloqueio para determinar quem está a utilizar a base de dados.

A utilização do ficheiro de bloqueio

O motor de base de dados do Access utiliza as informações do ficheiro de bloqueio para impedir que os utilizadores escrevam dados em páginas ou registos que outros utilizadores tenham bloqueado e para determinar quem tem outras páginas ou registos bloqueados. Se o motor de base de dados do Access detetar um conflito de bloqueio com outro utilizador, este lerá o ficheiro de bloqueio para obter o nome do computador e de segurança do utilizador que tem o ficheiro ou registo bloqueado.

Na maioria das situações de conflito de bloqueio, receberá uma mensagem genérica "Conflito de escrita" que lhe permite guardar o registo, copiá-lo para a Área de Transferência ou desistir das alterações que fez. Nalgumas circunstâncias, no entanto, receberá a seguinte mensagem de erro:

Não foi possível bloquear o nome da tabela<; atualmente em utilização pelo nome> de segurança do utilizador <no nome> do computador<.>

Nota

O estado das informações no ficheiro de bloqueio não tem peso no estado da base de dados. Se um ficheiro de bloqueio ficar danificado, tudo o que estiver na base de dados deverá continuar a funcionar corretamente. No entanto, poderá ver texto baralhado em vez de nomes de utilizador em mensagens de conflito de bloqueio.

Com o Microsoft Visual Basic for Applications, pode obter uma lista de utilizadores com sessão ativa numa base de dados específica. Para obter mais informações sobre como fazê-lo e código de exemplo, consulte Como determinar quem tem sessão ativa numa base de dados usando o Microsoft Jet UserRoster no Access.