Eu tenho um script para atualizar alguns recursos no meu banco de dados todas as noites (apenas para copiar e substituir alguns recursos). Este recurso é "somente leitura". Meu problema é que não posso evitar que esses recursos sejam abertos pelos usuários e meu script pode mostrar o seguinte erro:
ExecuteError: ERROR 000464: Cannot get exclusive schema lock.
Either being edited or in use by another application.
Posso forçar o script phyton, através de algum comando, copiando os arquivos, mesmo sendo aberto por algum usuário? Posso derrubar todas as conexões no meu banco de dados antes de executar o script?
Respostas:
Suponho que você esteja trabalhando com a SDE.
Você deve matar todas as conexões usando
sdemon
a ferramenta de linha de comando.sdemon -o kill
localmente para eliminar todas as conexões. Dê uma olhada neste tópico de ajuda . Não tenho certeza se está matando conexões diretas no 10.0. Lembro que era um tipo de problema na 9.3 e que definitivamente está matando conexões diretas na 10.1.fonte
sdemon -o kill
não é suficiente. Você deve passar parâmetros adicionais, dê uma olhada no link fornecido .Outra possibilidade, desde que você disse que está usando o SDE, é excluir bloqueios compartilhados das tabelas
layer_locks
etable_locks
usando SQL, PL / SQL, T-SQL, etc., por exemplo:Definitivamente, eu não recomendaria essa abordagem em um geodatabase versionado. Veja também: Como os vários mecanismos de bloqueio são implementados no ArcSDE e no geodatabase?
fonte
Se a preferência é remover bloqueios de usuário SDE específicos, existe uma maneira de fazer isso via arcpy . Prefiro essa abordagem porque não exige que você pule no servidor de banco de dados para executar um comando sde. Posso desconectar qualquer bloqueio indesejado e executar atualizações de dados em um único script / processo.
O exemplo do link acima é muito útil:
fonte
Não estou muito familiarizado com o postgresql, mas acho que este post pode levá-lo à direção certa:
/programming/5108876/kill-a-postgresql-session-connection
fonte