Tengo un script para actualizar algunas funciones en mi base de datos todas las noches (solo para copiar y reemplazar algunas funciones). Estas características son de "solo lectura". Mi problema es que no puedo evitar que los usuarios abran estas funciones y mi script puede mostrar el siguiente error:
ExecuteError: ERROR 000464: Cannot get exclusive schema lock.
Either being edited or in use by another application.
¿Puedo forzar el script phyton, mediante algún comando, copiando los archivos, incluso si algún usuario lo ha abierto? ¿Puedo eliminar todas las conexiones de mi base de datos antes de ejecutar el script?
Respuestas:
Supongo que estás trabajando con SDE.
Debe eliminar todas las conexiones con la
sdemon
herramienta de línea de comandos.sdemon -o kill
localmente para eliminar todas las conexiones. Eche un vistazo a este tema de ayuda . No estoy seguro de si está matando las conexiones directas en 10.0. Recuerdo que fue un tipo de problema en 9.3 y que definitivamente está matando las conexiones directas en 10.1.fuente
sdemon -o kill
no es suficiente. Debe pasar parámetros adicionales, eche un vistazo al enlace proporcionado .Otra posibilidad, ya que dijo que está usando SDE es eliminar bloqueos compartidos de las tablas
layer_locks
ytable_locks
utilizando SQL, PL / SQL, T-SQL, etc., por ejemplo:Definitivamente no recomendaría este enfoque en una geodatabase versionada. Consulte también: ¿Cómo se implementan los diversos mecanismos de bloqueo en ArcSDE y la geodatabase?
fuente
Si la preferencia es eliminar bloqueos de usuario SDE específicos, hay una manera de hacerlo a través de arcpy . Prefiero este enfoque porque no requiere que salte al servidor de la base de datos para ejecutar un comando sde. Puedo desconectar los bloqueos no deseados y luego realizar actualizaciones de datos en un solo script / proceso.
El ejemplo del enlace anterior es muy útil:
fuente
No estoy muy familiarizado con postgresql, pero creo que esta publicación puede guiarlo en la dirección correcta:
/programming/5108876/kill-a-postgresql-session-connection
fuente