У меня есть скрипт для обновления некоторых функций в моей базе данных каждую ночь (только для копирования и замены некоторых функций). Эти функции доступны только для чтения. Моя проблема в том, что я не могу избежать того, что эти функции открыты пользователями, и мой скрипт может показать следующую ошибку:
ExecuteError: ERROR 000464: Cannot get exclusive schema lock.
Either being edited or in use by another application.
Можно ли с помощью какой-либо команды принудительно заставить скрипт phyton копировать файлы, даже открытые каким-либо пользователем? Могу ли я отключить все соединения в моей базе данных перед запуском скрипта?
Ответы:
Я полагаю, что вы работаете с SDE.
Вы должны уничтожить все соединения, используя
sdemon
инструмент командной строки.sdemon -o kill
локально, чтобы уничтожить все соединения. Взгляните на эту справочную тему . Я не уверен, что это убивает прямые соединения на 10.0. Я помню, что это было своего рода проблемой на 9.3 и что это определенно убивает прямые подключения на 10.1.источник
sdemon -o kill
не достаточно. Вам необходимо передать дополнительные параметры, взгляните на предоставленную ссылку .Еще одна возможность , так как вы сказали , что вы используете SDE, чтобы удалить общие замки из
layer_locks
иtable_locks
таблиц с помощью SQL, PL / SQL, T-SQL, и т.д. , например:Я определенно не рекомендовал бы такой подход в версионной базе геоданных. См. Также: Как реализованы различные механизмы блокировки в ArcSDE и базе геоданных?
источник
Если предпочтение , чтобы удалить определенные блокировки пользователя SDE, есть способ сделать это с помощью arcpy . Я предпочитаю такой подход, потому что он не требует, чтобы вы перепрыгивали на сервер базы данных для выполнения команды sde. Я могу отключить любые нежелательные блокировки, а затем выполнить обновления данных в один сценарий / процесс.
Пример из приведенной выше ссылки очень полезен:
источник
Я не очень знаком с postgresql, но я думаю, что этот пост может привести вас в правильном направлении:
/programming/5108876/kill-a-postgresql-session-connection
источник