PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Matar uma sessão/conexão postgresql


Você pode usar pg_terminate_backend() para matar uma conexão. Você precisa ser superusuário para usar esta função. Isso funciona em todos os sistemas operacionais da mesma forma.
SELECT 
    pg_terminate_backend(pid) 
FROM 
    pg_stat_activity 
WHERE 
    -- don't kill my own connection!
    pid <> pg_backend_pid()
    -- don't kill the connections to other databases
    AND datname = 'database_name'
    ;

Antes de executar esta consulta, você deve REVOGAR os privilégios CONNECT para evitar novas conexões:
REVOKE CONNECT ON DATABASE dbname FROM PUBLIC, username;

Se você estiver usando o Postgres 8.4-9.1, use procpid em vez de pid
SELECT 
    pg_terminate_backend(procpid) 
FROM 
    pg_stat_activity 
WHERE 
    -- don't kill my own connection!
    procpid <> pg_backend_pid()
    -- don't kill the connections to other databases
    AND datname = 'database_name'
    ;