Access のロック ファイル (laccdb と ldb) の概要

はじめに

「.laccdb」または「.ldb」ファイルは、Microsoft Access データベース エンジンのマルチユーザー スキームにおいて重要な役割を果たします。 「.laccdb」または「.ldb」ファイルを使用して、共有データベースでロックされているレコードと、ロックしたユーザーを特定します。 「.laccdb」ファイルは .accdb データベースと一緒に使用され、「.ldb」ファイルは「.mdb」 データベースと一緒に使用されます。 「.laccdb」ファイルと「.ldb」ファイルは両方とも、一般的にロック ファイルと呼ばれます。

自動ロック ファイルの作成と削除

共有で使用するために開かれているすべてのデータベースに対して、コンピューター名とセキュリティ名を格納し、拡張バイト範囲ロックを配置するために、「.laccdb」または「.ldb」ファイルが作成されます。 ロック ファイルは、開いたデータベースと常に同じ名前を持ち、開いたデータベースと同じフォルダーに格納されます。 たとえば、C:\users\<username>\documents\で Northwind.accdb サンプル データベースを (共有用に) 開いた場合は、Northwind.laccdb という名前のファイルが同じドキュメント フォルダーに自動的に作成されます。

最後のユーザーが共有データベースを閉じるたびに、ロック ファイルが削除されます。 唯一の例外は、ユーザーが削除権限を持っていない場合、またはデータベースが壊れているとマークされている場合です。 次に、データベースが破損したとマークされた時点でデータベースを使用したユーザーに関する情報が含まれているため、ロック ファイルは削除されません。

必要なフォルダーの特権

データベースを共有する場合、データベース ファイルは、ユーザーが読み取り、書き込み、作成、および削除の権限を持つフォルダーに格納する必要があります。 ユーザーが異なるファイル特権 (読み取り専用と読み取り/書き込みなど) を持つ必要がある場合でも、データベースを共有しているすべてのユーザーは、フォルダーに対する読み取り、書き込み、および作成のアクセス許可を持っている必要があります。 ただし、フォルダーへの完全なアクセス許可を付与しながら、個々のユーザーの .accdb または .mdb ファイルに読み取り専用のアクセス許可を割り当てること可能もです。

注:

ユーザーが排他的アクセス権でデータベースを開いた場合 ([開く] ボタンの右側にある矢印、[排他を開く] の順にクリック)、レコードのロックは使用されません。 そのため、Microsoft Access でロック ファイルが開くことも作成されることもありません。 データベースが常に排他的使用のために開いている場合、ユーザーはフォルダーに対する読み取りおよび書き込み権限のみを持っている必要があります。

ロック ファイルの内容

共有データベースを開くユーザーごとに、Access データベース エンジンがデータベースの「.laccdb」または「.ldb」ファイルにエントリを書き込みます。 各エントリのサイズは 64 バイトです。 最初の 32 バイトには、コンピューター名 (JohnDoe など) が含まれます。 2 つ目の 32 バイトには、セキュリティ名 (Admin など) が含まれます。 Access データベース エンジンがサポートする同時ユーザーの最大数は 255 です。 したがって、ロック ファイルのサイズが 16 キロバイトを超えることはありません。

注:

ファイル サーバー ソリューションは最大 255 人の同時ユーザーをサポートすることができますが、ソリューションのユーザーが頻繁にデータを追加してデータを更新する場合は、Access ファイル サーバー ソリューションで 25 ~ 50 人以下のユーザーをサポートすることをお勧めします。 詳細については、「第 1 章: Microsoft Access 2000 クライアント/サーバーの開発について理解する」を参照してください。

ユーザーが共有データベースを閉じると、ユーザーのエントリはロック ファイルから削除されません。 ただし、別のユーザーがデータベースを開くと、ユーザーのエントリが上書きされる可能性があります。 つまり、データベースを現在使用しているユーザーを特定するために、ロック ファイルを単独で使用することはできません。

ロック ファイルの使用状況

Access データベース エンジンは、ロック ファイル情報を使用して、ユーザーがロックしたページまたはレコードに他のユーザーがデータを書き込むのを防ぎ、他のページやレコードがロックされているユーザーを特定します。 Access データベース エンジンが別のユーザーとのロック競合を検出すると、ロック ファイルを読み取り、ファイルまたはレコードがロックされているユーザーのコンピューターとセキュリティ名を取得します。

ほとんどのロック競合状況では、レコードを保存したり、クリップボードにコピーしたり、行った変更を削除したりできる一般的な「書き込み競合」メッセージが表示されます。 このとき、次のエラー メッセージが表示される場合があります。

テーブル <テーブル名をロックできませんでした。現在、コンピューター<コンピューター>名>のユーザー <セキュリティ名>で使用されています。

注:

ロック ファイル内の情報の状態が、データベースの状態に影響を与えることはありません。 ロック ファイルが破損した場合でも、データベース内のすべてが正しく動作するはずです。 ただし、ロック競合メッセージには、ユーザー名の代わりにスクランブルされたテキストが表示される場合があります。

Microsoft Visual Basic for Applicationsを使用すると、特定のデータベースにログインしているユーザーの一覧を出力できます。 この方法とサンプル コードの詳細については、「 Access で Microsoft Jet UserRoster を使用して、データベースにログオンしているユーザーを特定する方法」を参照してください。