Zum Speichern von Entwurfsänderungen an Access-Objekten ist eine exklusive Sperre erforderlich.

Ursprüngliche KB-Nummer: 283228

Hinweis

Erweitert: Erfordert Expertencodierung, Interoperabilität und Multiuser-Fähigkeiten. Dieser Artikel gilt nur für eine Microsoft Access-Datenbank (MDB und ACCDB).

Problembeschreibung

Wenn Sie versuchen, Symbolleisten anzupassen oder ein Microsoft Access-Formular, einen Bericht, ein Makro oder ein Modul in der Entwurfsansicht zu öffnen, wird die folgende Meldung angezeigt:

Sie haben derzeit keinen exklusiven Zugriff auf die Datenbank. Wenn Sie Änderungen vornehmen, können Sie sie möglicherweise später nicht mehr speichern.

Wenn Sie versuchen, Entwurfsänderungen zu speichern, die Sie an einem Access-Formular, -Bericht, -Makro oder -Modul vorgenommen haben, erhalten Sie die folgende Meldung:

Sie haben derzeit keinen exklusiven Zugriff auf die Datenbank. Ihre Entwurfsänderungen werden nicht gespeichert.

Wenn Sie versuchen, eine neue Datenzugriffsseite zu speichern, wird die folgende Meldung angezeigt:

Ein Link zu dieser Datenzugriffsseite konnte nicht erstellt werden, da die Datenbank nicht exklusiv gesperrt werden kann.

Ursache

  • Sie versuchen, ein Formular, einen Bericht, ein Makro, ein Modul oder eine Befehlsleiste in der Entwurfsansicht zu öffnen.
  • Sie versuchen, Entwurfsänderungen für einen dieser Objekttypen oder einen neuen Seitenlink zu speichern, während andere Benutzer dieselbe Datenbank geöffnet haben.

Um Entwurfsänderungen an diesen Objekttypen zu speichern, muss Access in der Lage sein, eine exklusive Sperre für die Datenbank zu erhalten.

Lösung

In Situationen, in denen mehrere Entwickler eine Access-Anwendung gleichzeitig entwerfen, müssen Sie die Quellcodeverwaltung mithilfe des Microsoft Visual SourceSafe-Add-Ins für Microsoft Access implementieren. Oder Sie müssen lokale Arbeitskopien der Datenbank an jeden Entwickler verteilen. Es folgt eine Erläuterung der einzelnen Optionen.

Implementieren der Quellcodeverwaltung

Die Microsoft Access-Visual SourceSafe Add-In ermöglicht Es Ihnen, Ihre Access-Anwendung während der Entwicklung der Quellcodeverwaltung zu unterstellen. Wenn Sie Ihre Anwendung der Quellcodeverwaltung unterstellen, können Sie Änderungen nachverfolgen und speichern, die im Laufe der Zeit an Ihrer Anwendung vorgenommen werden. Mithilfe von Microsoft Visual SourceSafe können Sie den Verlauf eines Objekts überprüfen und dann zu früheren Versionen eines Objekts zurückkehren. Sie können Objekte in der Microsoft Access-Anwendung auschecken, ändern oder neue Objekte in ihrer lokalen Kopie erstellen und dann wieder in die Hauptdatenbank unter Quellcodeverwaltung einchecken. Die Microsoft Access-Visual SourceSafe Add-In ist für Microsoft Office XP Developer verfügbar. Um das Microsoft Access-Visual SourceSafe-Add-In verwenden zu können, müssen Sie microsoft Visual SourceSafe, das auch für Microsoft Office XP Developer verfügbar ist, separat installieren.

Verwenden einzelner Arbeitsdatenbanken

Eine weitere Möglichkeit, die Sie implementieren können, besteht darin, eine Masterkopie der Datenbankanwendung an einem zentralen Speicherort zu speichern und dann einzelne Arbeitskopien der Datenbank auf dem Computer jedes Entwicklers zu verwenden. Jeder Entwickler würde einen einzelnen Teil der Anwendung in der lokalen Arbeitskopie der Datenbank entwickeln. Wenn die Entwickler eine Änderung an einem Objekt in der Datenbankanwendung vornehmen möchten, importieren sie das Objekt aus der Masterdatenbank in die lokale Arbeitsdatenbank. Anschließend nehmen die Entwickler die erforderlichen Änderungen am Objekt in der lokalen Arbeitsdatenbank vor und speichern das Objekt. Wenn die Entwickler bereit sind, die Änderungen in die Masterdatenbank zu übernehmen, würden sie das Objekt in die Masterdatenbank exportieren und das ursprüngliche Objekt überschreiben.

Ein Nachteil dieser Vorgehensweise besteht darin, dass es keine Möglichkeit gibt, festzustellen, ob mehrere Entwickler gleichzeitig lokal an demselben Objekt arbeiten. Wenn der Entwickler das Objekt in die Masterdatenbank exportiert, kann der Entwickler unwissentlich Änderungen überschreiben, die ein anderer Entwickler für die Masterdatenbank zugesichert hat.

Weitere Informationen

Um Entwurfsänderungen an Access-spezifischen Objekten wie Formularen, Berichten, neuen Seitenverknüpfungen, Makros, Modulen und Befehlsleisten zu speichern, muss Access 2002 die Datenbank während des Speichervorgangs exklusiv sperren können. Tabellen, Abfragen und Beziehungen fallen nicht unter diese Einschränkung, da es sich um Microsoft Jet-spezifische Objekte handelt. Microsoft verwendet diese Anforderung mit Access 2002 aus mehreren Gründen:

  • Es bietet Konsistenz mit anderen Visual Basic Environment-Clientanwendungen.
  • Die Abhängigkeit vom Jet-Datenbankmodul wird beendet.
  • Es verbessert die Stabilität von Access-spezifischen Objekten.

Konsistenz mit anderen Visual Basic-Umgebungsclientanwendungen

Da Access 2002 die Visual Basic-Umgebung hostet, muss das von Microsoft Access verwendete Speichermodell mit anderen Anwendungen konsistent sein, die die Visual Basic-Umgebung hosten. Die Visual Basic-Umgebung ermöglicht nur die exklusive Bearbeitung und Speicherung von Visual Basic-Projekten, die nicht der Quellcodeverwaltung unterliegen. Dies gilt für Visual Basic 6.0 sowie für alle Office-Anwendungen, die die Visual Basic-Umgebung hosten.

Beendet die Abhängigkeit vom Jet-Datenbankmodul

Access bietet die Möglichkeit, Microsoft Access-Projektdateien (ADP) und auch Microsoft Access-Datenbanken (MDB) zu erstellen. Mithilfe eines Access-Projekts können Entwickler Microsoft SQL Server als ein weiteres Datenbankmodul für Microsoft Jet verwenden. In der Vergangenheit waren alle Access-spezifischen Objekte (Formulare, Berichte, Makros, Module und Befehlsleisten) vom Jet-Datenbankmodul für die Speicherung abhängig. Diese Objekte wurden in Access-spezifischen Systemtabellen in der Microsoft Jet-Datenbank gespeichert. Da es Access möglich ist, Microsoft SQL Server als Alternative zu Microsoft Jet zu verwenden, musste Microsoft einen Speichermechanismus für Access-spezifische Objekte entwickeln, der nicht auf das Jet-Datenbankmodul angewiesen ist.

Verbessert die Stabilität von Access-spezifischen Objekten

Das Projektspeichermodell verbessert die Stabilität von Access-spezifischen Objekten und des Visual Basic-Projekts. Visual Basic for Applications hat nie die Bearbeitung von Visual Basic-Projekten mit mehreren Benutzern ohne Quellcodeverwaltung zugelassen. Microsoft Access 95 und Microsoft Access 97 könnten diese Einschränkung umgehen, indem projektbezogene Änderungen, die in einer Umgebung mit mehreren Benutzern vorgenommen wurden, aus Visual Basic for Applications ausgeblendet und später in das Projekt zusammengeführt werden. Dies hatte jedoch das Potenzial, die Stabilität des Visual Basic-Projekts zu beeinträchtigen. Daher erfordert Microsoft Access beim Entwerfen von Access-spezifischen Objekten eine exklusive Sperre, um sicherzustellen, dass das Projekt nur über einen Editor verfügt.

Bearbeiten von Access-Objekten in einer Umgebung mit mehreren Benutzern

Da Benutzer eine Datenbank entweder zur exklusiven oder freigegebenen Verwendung öffnen können, hängt das von Access gezeigte Speicherverhalten davon ab, wie der Benutzer die Datenbank geöffnet hat und ob derzeit mehrere Benutzer darauf zugreifen.

Wenn ein Entwickler die Datenbank zur exklusiven Verwendung öffnet, kann der Entwickler den Entwurf eines beliebigen Access-spezifischen Objekts speichern, vorausgesetzt, der Entwickler kann die Datenbank für den Lese-/Schreibzugriff öffnen und verfügt über die richtigen Berechtigungen, um den Entwurf des Objekts zu ändern.

Wenn ein Benutzer die Datenbank zur gemeinsamen Verwendung öffnet, kann der Benutzer den Entwurf eines beliebigen Access-spezifischen Objekts speichern, vorausgesetzt, der Benutzer kann die Datenbank für den Lese-/Schreibzugriff öffnen, hat die richtigen Berechtigungen, um den Entwurf des Objekts zu ändern, und Access kann eine exklusive Sperre für die Datenbank erhalten.

Werbeaktion sperren

Um sicherzustellen, dass die Datenbank exklusiv verwendet wird, verwendet Access die Verbindungssteuerungsfunktion des Jet-Datenbankmoduls, um die freigegebene Sperre des Benutzers als exklusiv zu stufen. Access versucht, eine freigegebene Sperre zu einer exklusiven Sperre heraufzustufen, sobald der Benutzer ein Formular, einen Bericht, ein Makro oder eine Befehlsleiste in der Entwurfsansicht öffnet. Access versucht, die Heraufstufung zu diesem Zeitpunkt zu sperren, um das Szenario zu verhindern, in dem ein Benutzer mehrere Entwurfsänderungen vorgenommen hat, um später festzustellen, dass der Benutzer sie nicht speichern kann, da Access keine exklusive Sperre erhalten kann. Durch den Versuch, die Heraufstufung zu sperren, sobald der Benutzer ein Objekt in der Entwurfsansicht öffnet, kann Access den Benutzer warnen, wenn er keine exklusive Sperre erhalten kann, bevor der Benutzer Entwurfsänderungen vornimmt. Access versucht nicht, die Heraufstufung zu sperren, wenn ein Modul in der Entwurfsansicht geöffnet wird. Es wird jedoch versucht, die Heraufstufung zu sperren, sobald der Benutzer ein Beliebiges Modul in der Datenbank bearbeitet.

Access behält die exklusive Sperre bei, bis der Benutzer alle geänderten Objekte speichert oder verwirft, und keine anderen Objekte in der Entwurfsansicht geöffnet sind. Anschließend stuft Access die Sperre wieder auf "Freigegeben" zurück, wenn die Datenbank ursprünglich zur gemeinsamen Verwendung geöffnet wurde.

Wenn Access die Sperre nicht als exklusiv heraufstufen kann, wenn der Benutzer ein Objekt in der Entwurfsansicht öffnet, benachrichtigt Access den Benutzer mit der Meldung:

Sie haben derzeit keinen exklusiven Zugriff auf die Datenbank. Wenn Sie Änderungen vornehmen, können Sie sie möglicherweise später nicht mehr speichern.

Nach dieser Warnmeldung öffnet Access das Objekt in der Entwurfsansicht und ermöglicht es dem Benutzer, Entwurfsänderungen vorzunehmen. Wenn der Benutzer versucht, das Objekt zu speichern, versucht Access, die freigegebene Sperre als exklusiv zu höherstufen. Wenn die Heraufstufung der Sperrung erfolgreich ist, speichert Access das Objekt und behält die exklusive Sperre bei, bis der Benutzer alle anderen geänderten Objekte speichert oder verwirft, und kein Objekt in der Entwurfsansicht geöffnet bleibt. Wenn die Sperraufstufung fehlschlägt, erhält der Benutzer die folgende Meldung:

Sie haben derzeit keinen exklusiven Zugriff auf die Datenbank. Ihre Entwurfsänderungen werden nicht gespeichert.

Wenn der Benutzer versucht, das geänderte Objekt zu schließen und Änderungen zu speichern, fordert Access den Benutzer auf, das Objekt zu schließen und an diesem vorgenommene Entwurfsänderungen zu verwerfen oder es geöffnet und nicht gespeichert zu lassen.

Schritte zum Reproduzieren des Verhaltens

  1. Starten Sie zwei Instanzen von Microsoft Access auf demselben Computer.

  2. Öffnen Sie die Beispieldatenbank "Northwind.mdb" in beiden Instanzen.

  3. Öffnen Sie in der ersten Instanz von Microsoft Access das Formular "Kunden " in der Entwurfsansicht .

    Sie erhalten die Folgendes:

    Sie haben derzeit keinen exklusiven Zugriff auf die Datenbank. Wenn Sie Änderungen vornehmen, können Sie sie möglicherweise später nicht mehr speichern.

  4. Klicken Sie auf "OK ", um die Nachricht zu löschen.

    Das Formular wird in der Entwurfsansicht geöffnet.

  5. Fügen Sie dem Formular ein Textfeld-Steuerelement hinzu.

  6. Klicken Sie im Menü Datei auf Speichern .

    Sie erhalten die folgende Meldung:

    Sie haben derzeit keinen exklusiven Zugriff auf die Datenbank. Ihre Entwurfsänderungen werden nicht gespeichert.

  7. Klicken Sie auf "OK ", um die Nachricht zu löschen.

  8. Schließen Sie die zweite Instanz von Access auf Ihrem Computer.

  9. Versuchen Sie in der ersten Instanz von Access, das Formular erneut zu speichern.

    Das Formular wurde erfolgreich gespeichert.