2015-04-20 2 views
0

Я случайно создал множество подключений к нашей базе данных Vertica через драйвер JDBC. Невозможно закрыть их программно через драйвер JDBC, и единственный вариант - закрыть их с помощью SQL-запроса. В Vertica, я хочу запуститьКак закрыть сеансы (соединения) с sql-database (vertica) рекурсивно

select close_session(select session_id from sessions where client_hostname like '%.195%'); 

или

select close_session() from sessions where session_id in (select distinct session_id from sessions where client_hostname like '%.195%'); 

Оба варианта являются неправильными и не работают. Какое правильное решение? (я не могу использовать close_all_sessions(), потому что это убьет текущие запросы моих коллег. Я могу закрыть 50 сеансов вручную, но полезно знать правильный способ сделать эту работу в любом случае)

ответ

1

Ну сначала спросите себя, почему вы разрешаете более 50 сеансов клиентов?

Я бы тогда подготовить CLOSE_SESSION() заявления и запустить их:

SELECT E'SELECT CLOSE_SESSION(\'' || session_id || E'\');' 
FROM user_sessions 
WHERE client_hostname LIKE '%.195%'; 
+0

Я открыл так много сеансов по ошибке (в цикле) как я бегу эти подготовленные сессии? Просто скопируйте и вставьте ?. – RInatM

+0

@RInatM Исправить. Скопируйте вывод этого запроса в запрос и запустите. – Kermit