Verwalten von Verbindungen mit Enterprise-Geodatabases in SQL Server

Mit der Standard- oder Advanced-Lizenz verfügbar.

Als Geodatabase-Administrator müssen Sie gelegentlich überprüfen, wer mit der Geodatabase verbunden ist und welche Verbindungen Ressourcen sperren. Möglicherweise müssen Sie auch bestimmte Verbindungen entfernen, wenn die Benutzer nicht anwesend sind, um ihre Verbindung selbst zu trennen. Ein Editor hat ArcGIS Pro möglicherweise während der Bearbeitung geöffnet gelassen, wodurch die Daten in der Bearbeitungssitzung gesperrt sind und andere Editoren nicht darauf zugreifen können, sodass der Datenbesitzer das Schema der Tabellen nicht ändern kann. Oder Sie können verlangen, dass alle Benutzer ihre Verbindung trennen, damit Sie ein Patch auf die Datenbank anwenden, die Datenbank wiederherstellen oder die Geodatabase komprimieren können.

Sie können in ArcGIS Pro als Geodatabase-Administrator eine Verbindung zur Geodatabase herstellen, um Verbindungen anzuzeigen und bei Bedarf zu trennen. Alternativ können Sie diesen Workflow mit ArcPy-Funktionen durchführen.

Um Benutzer von einer Enterprise-Geodatabase in Microsoft SQL Server zu trennen, benötigt der Geodatabase-Administrator möglicherweise zusätzliche Berechtigungen.

  • Der Geodatabase-Administrator in einer SDE-Schema-Geodatabase (sde) benötigt VIEW DEFINITION-Berechtigungen für die Datenbank, um die Liste der verbundenen Benutzer anzuzeigen. Um Benutzer zu trennen, muss er ein Mitglied der festgelegten Serverrolle "processadmin" sein.
  • Wenn der Geodatabase-Administrator einer DBO-Schema-Geodatabase der Datenbankbesitzer ist, muss der Geodatabase-Administrator der festgelegten Serverrolle "processadmin" hinzugefügt werden, um Benutzer trennen zu können.
Für den Geodatabase-Administrator in einer DBO-Schema-Geodatabase sind keine zusätzlichen Berechtigungen erforderlich, wenn der Geodatabase-Administrator Mitglied der festgelegten Serverrolle "sysadmin" ist.

Vorsicht:

Gehen Sie beim Trennen von Benutzern mit Bedacht vor. Vermeiden Sie es, aktive Sitzungen zu trennen, besonders, wenn der verbundene Benutzer gerade etwas bearbeitet. Sie sollten die Verbindung von Sitzungen nur dann trennen, wenn eine Sitzung geöffnet gelassen wurde, aber nicht verwendet wird (wenn ein Benutzer die Sitzung beispielsweise am Wochenende geöffnet gelassen hat), wenn eine Sitzung verwaist ist und ein Objekt sperrt oder wenn eine Deadlock-Situation auftritt.

Stellen Sie zunächst fest, wer mit der Geodatabase verbunden ist. Sie können dann ggf. die entsprechenden Verbindungen trennen.

Identifizieren und entfernen Sie Verbindungen in ArcGIS Pro

Sie können als Geodatabase-Administrator in ArcGIS Pro eine Verbindung mit der Geodatabase herstellen, um Verbindungen im Dialogfeld Geodatabase-Verwaltung anzuzeigen und zu entfernen.

  1. Starten Sie ArcGIS Pro.
  2. Stellen Sie eine Verbindung mit der Geodatabase als Geodatabase-Administrator her.
  3. Klicken Sie mit der rechten Maustaste auf die Datenbankverbindung und dann auf Verwaltung > Verbindungen.

    Es wird eine Liste mit allen Sitzungen angezeigt, die aktuell mit der Geodatabase verbunden sind. Ihre Sitzung wird in kursivem Text angezeigt.

  4. Wenden Sie sich an einzelne Benutzer, um sie zu bitten, ihre Sitzungen zu schließen. Falls Sie sie nicht erreichen können und sie dennoch von der Geodatabase trennen müssen, fahren Sie mit dem nächsten Schritt fort.
  5. Klicken Sie mit der rechten Maustaste auf die entsprechende Sitzung, die Sie aus der Geodatabase entfernen möchten, und klicken Sie auf Trennen.

    Die Sitzung wird sofort aus der Geodatabase gelöscht.

  6. Schließen Sie das Dialogfeld Geodatabase-Verwaltung.

Identifizieren und Entfernen von Verbindungen mit Python

Sie können ArcPy-Funktionen ausführen, um eine Geodatabase-Verbindungsdatei für den Geodatabase-Administratorbenutzer zu erstellen, mit dieser Verbindungsdatei eine Verbindung zur Geodatabase herzustellen, eine Liste aller aktuellen Geodatabase-Verbindungen abzurufen und ggf. eine Verbindung aus der Geodatabase zu entfernen.

  1. Erstellen Sie eine Datenbankverbindungsdatei, indem Sie die Funktion CreateDatabaseConnection_management in einem Python-Fenster ausführen.

    In diesem Beispiel wird im temporären Ordner eine Verbindungsdatei (ssgdb.sde) erstellt. Die Verbindung wird durch die Anmeldung als SA-Benutzer mit der Datenbank "gisprod" auf der SQL Server-Instanz "sdept4" hergestellt.

    import arcpy
    arcpy.CreateDatabaseConnection_management ("c:\\temp","ssgdb.sde","SQL_SERVER","sdept4","DATABASE_AUTH","sa","esayP@ss","SAVE_USERNAME","gisprod")

  2. Führen Sie die Funktion ListUsers aus, um eine Liste der aktuellen Verbindungen mit der Geodatabase "gisprod" abzurufen.

    Geben Sie die Verbindungsdatei an, die Sie im vorherigen Schritt erstellt haben.

    ##No need to import arcpy if you are running functions in the same Python window.
    import arcpy
    
    arcpy.ListUsers("c:\\temp\ssgdb.sde")

    Es wird eine Liste der Benutzerverbindungen zurückgegeben.

    [user(ClientName=u'PC4', ConnectionTime=datetime.datetime(2018, 10, 18, 8, 30, 19),
     ID=18, IsDirecConnection=True, Name=u'PUBLISHER1')]
    [user(ClientName=u'PC25', ConnectionTime=datetime.datetime(2018, 10, 21, 14, 10, 43),
     ID=33, IsDirecConnection=True, Name=u'EDITOR2')]
    [user(ClientName=u'PC11', ConnectionTime=datetime.datetime(2018, 10, 22, 9, 18, 26),
     ID=39, IsDirecConnection=True, Name=u'READER5')]
    [user(ClientName=u'PCA2', ConnectionTime=datetime.datetime(2018, 10, 22, 11, 21, 2),
     ID=41, IsDirecConnection=True, Name=u'DBO')]

  3. Wenden Sie sich an einzelne Benutzer, um sie zu bitten, ihre Sitzungen zu schließen. Falls Sie sie nicht erreichen können und sie dennoch von der Geodatabase trennen müssen, fahren Sie mit dem nächsten Schritt fort.
  4. Ermitteln Sie anhand der mit der Funktion ListUsers abgerufenen Informationen, welche Verbindung entfernt werden muss, indem Sie die Funktion DisconnectUser verwenden.

    Geben Sie die ID der zu entfernenden Verbindung an. Hier wird die Verbindung mit der ID 33 entfernt:

    ##No need to import arcpy if you are running functions in the same Python window.
    import arcpy
    
    arcpy.DisconnectUser("c:\\temp\ssgdb.sde",33)

    Die Sitzung wird sofort aus der Geodatabase gelöscht.