sql >> Databasteknik >  >> RDS >> PostgreSQL

Döda en postgresql-session/anslutning

Du kan använda pg_terminate_backend() för att avbryta en anslutning. Du måste vara superanvändare för att använda den här funktionen. Detta fungerar likadant på alla operativsystem.

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

Innan du kör den här frågan måste du ÅTERVÄNDA CONNECT-behörigheterna för att undvika nya anslutningar:

REVOKE CONNECT ON DATABASE dbname FROM PUBLIC, username;

Om du använder Postgres 8.4-9.1 använd procpid istället för 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'
    ;


  1. Hur ska jag skicka ett tabellnamn till en lagrad proc?

  2. Hur man returnerar dubblettnycklar från ett JSON-dokument i SQL Server

  3. SQL Server-säkerhetsöverväganden

  4. Vad är DTU i Azure SQL Database och hur man räknar ut hur mycket vi behöver