PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Uccidi una sessione/connessione postgresql

Puoi usare pg_terminate_backend() per terminare una connessione. Devi essere superutente per usare questa funzione. Funziona allo stesso modo su tutti i sistemi operativi.

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'
    ;

Prima di eseguire questa query, devi REVOCA i privilegi CONNECT per evitare nuove connessioni:

REVOKE CONNECT ON DATABASE dbname FROM PUBLIC, username;

Se stai usando Postgres 8.4-9.1 usa procpid invece di 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'
    ;