PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Beenden Sie eine Postgresql-Sitzung/Verbindung

Sie können pg_terminate_backend() verwenden, um eine Verbindung zu beenden. Sie müssen Superuser sein, um diese Funktion nutzen zu können. Dies funktioniert auf allen Betriebssystemen gleich.

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

Bevor Sie diese Abfrage ausführen, müssen Sie die CONNECT-Berechtigungen widerrufen, um neue Verbindungen zu vermeiden:

REVOKE CONNECT ON DATABASE dbname FROM PUBLIC, username;

Wenn Sie Postgres 8.4-9.1 verwenden, verwenden Sie procpid anstelle von 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'
    ;