Administrar conexiones a una geodatabase en PostgreSQL

Disponible con una licencia Standard o Advanced.

Como administrador de la geodatabase, puede que de vez en cuando necesite identificar quién está conectado a la geodatabase y qué conexiones bloquean los recursos. También puede que necesite eliminar determinadas conexiones si las personas no están presentes para desconectarse por sí mismas. Por ejemplo, es posible que un editor haya dejado abierto ArcGIS AllSource durante la edición, con lo que los datos en la sesión de edición están bloqueados y se evita que otros editores accedan a ellos y que otros propietarios de datos alteren el esquema de las tablas. También es posible que quiera que todos se desconecten para que pueda aplicar un parche a la base de datos, restaurar la base de datos o comprimir la base de datos.

Puede conectarse a la geodatabase como el usuario SDE de ArcGIS AllSource para ver las conexiones y, en caso necesario, eliminarlas. O bien puede usar funciones de ArcPy para completar el mismo flujo de trabajo.

Precaución:

Tenga cuidado cuando desconecte usuarios. Evite desconectar las sesiones activas, especialmente si el usuario conectado está en proceso de edición. Solo desconecte las sesiones que se dejaron abiertas pero que no se están utilizando (por ejemplo, si alguien olvidó la sesión abierta durante el fin de semana), sesiones huérfanas que están bloqueando un objeto o sesiones implicadas en una situación de bloqueo mutuo.

En primer lugar, determine quién está conectado a la geodatabase. Si es necesario, puede eliminar conexiones.

Identificar y eliminar conexiones en ArcGIS AllSource

  1. Inicie ArcGIS AllSource.
  2. Haga clic con el botón derecho en la conexión de base de datos y haga clic en Administración > Conexiones.

    Se muestra una lista de todas las sesiones que están conectadas actualmente a la geodatabase. Su sesión se muestra con texto en cursiva.

  3. Póngase en contacto con los usuarios y pídales que cierren la sesión. Si no puede contactar con ellos y sigue necesitando desconectarlos de la geodatabase, realice el paso siguiente.
  4. Haga clic con el botón derecho en la sesión que quiera eliminar de la geodatabase y haga clic en Desconectar.

    La sesión se elimina de inmediato de la geodatabase.

  5. Cierre el cuadro de diálogo Administración de geodatabase.

Identificar y eliminar conexiones con ArcPy

Puede ejecutar las funciones de ArcPy para crear un archivo de conexión de base de datos para el usuario sde, usar ese archivo de conexión para conectarse a la geodatabase y obtener una lista de todas las conexiones de geodatabase actuales, y eliminar una conexión de la geodatabase si fuera necesario.

  1. Cree un archivo de conexión de base de datos ejecutando la función CreateDatabaseConnection_management en una ventana de Python. Guarde el nombre de usuario y la contraseña con el archivo.

    En este ejemplo se crea un archivo de conexión (pgdb.sde) en la carpeta temporal. Se conecta a la geodatabase pg1 del clúster de base de datos mydbc, iniciando sesión como usuario SDE.

    import arcpy
    arcpy.CreateDatabaseConnection_management ("c:\\temp", "pgdb.sde", "POSTGRESQL", "mydbc", "DATABASE_AUTH", "sde", "mysdepwd", "SAVE_USERNAME", "pg1")

  2. Ejecute la función ListUsers para obtener una lista de todas las conexiones actuales a la geodatabase pg1.

    Introduzca el archivo de conexión que creó en el paso anterior.

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

    Aparece una lista con las conexiones de usuario.

    [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'sde')]

  3. Póngase en contacto con los usuarios y pídales que cierren la sesión. Si no puede contactar con ellos y sigue necesitando desconectarlos de la geodatabase, realice el paso siguiente.
  4. Use la información obtenida con la función ListUsers para identificar la conexión que se eliminará con la función DisconnectUser.

    Especifique el Id. de la conexión que se eliminará. Aquí se elimina la conexión con Id. 33:

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

    La sesión se elimina de inmediato de la geodatabase.