CÓMO

La información de conexión proporcionada era para un usuario no administrativo

Last Published: February 19, 2025

Descripción

Se produce un error al utilizar la función ArcPy.DisconnectUser en una secuencia de comandos de Python como tarea programada para desconectar usuarios de una base de datos corporativa y se devuelve el siguiente mensaje de error:

Error:
RuntimeError:Connection information provided was for a non-administrative user

El error se produce aunque el usuario tenga ciertos privilegios administrativos para acceder a la base de datos o para la autenticación de la base de datos y aunque el archivo de conexión tenga credenciales almacenadas.

Note:
ArcGIS Enterprise supports several different databases. Each vendor has a different definition and permission set for the administrator role. For more information about the geodatabase administrator, and on the privileges needed based on a person's role in the organization, see the help page specific to the database management system you use. See also: ArcGIS Pro: Geodatabase management

Causa

Las posibles causas incluyen:

  • El usuario no es un administrador o no tiene los privilegios adecuados para desconectar a otros usuarios. Se trata de una limitación conocida, tal y como se describe en ArcMap: DisconnectUser.
  • La base de datos acepta activamente conexiones, en cuyo caso el error se devuelve aunque un administrador tenga acceso a la base de datos.

Solución o solución alternativa

Utilice una cuenta de usuario administrador para desconectar a los usuarios. Si se conceden los privilegios adecuados y el problema se repite, resuélvalo denegando nuevas conexiones a la base de datos e implementando el módulo de tiempo para garantizar que los intentos activos de conexión fallen. Para ello, siga los pasos que se indican.

  1. Importe los módulos necesarios.
import arcpy
import time
  1. Especifique el espacio de trabajo deseado.
admin_workspace = '[SDECONNECTIONFILE]'
arcpy.env.workspace = admin_workspace
  1. Bloquee conexiones nuevas a la base de datos.
arcpy.AcceptConnections(admin_workspace, False)
  1. Implemente el módulo de tiempo para esperar hasta que fallen todas las conexiones activas.
time.sleep(120)
  1. Desconecte todos los usuarios de la base de datos.
arcpy.DisconnectUser(admin_workspace, "ALL")

A continuación, se muestra el código completo:

import arcpy
import time

admin_workspace = 'Database Connections\sample_connection.sde'
arcpy.env.workspace = admin_workspace

arcpy.AcceptConnections(admin_workspace, False)
time.sleep(120)

arcpy.DisconnectUser(admin_workspace, "ALL")

Id. de artículo: 000018531

Obtenga soporte con IA

Resuelva su problema rápidamente con el chatbot de inteligencia artificial de soporte de Esri.

Empieza a chatear ahora

Información relacionada

Descubrir más sobre este tema

Obtener ayuda de expertos en ArcGIS

Contactar con el soporte técnico

Empieza a chatear ahora

Ir a opciones de descarga