Thread: Killing a session on windows
I have a database I want to drop on a windows server. Unfortunately I cannot restart postgres because it is running several live database. To kill the offending session, I tried select * from pg_stat_activity to find the PID of the session, and then tried to kill it with command line: taskkill /f /pid 1234 This appeared to kill the session, but postgres still thinks the session is live with the same process id. Using the SysInternals process explorer - there doesn't appear to be a process with the given ID. How can I get postgres to drop this session? Thanks Howard Cole www.selestial.com
Howard Cole wrote: > > I have a database I want to drop on a windows server. Unfortunately I > cannot restart postgres because it is running several live database. > > To kill the offending session, I tried select * from pg_stat_activity to > find the PID of the session, and then tried to kill it with command line: > > taskkill /f /pid 1234 > > This appeared to kill the session, but postgres still thinks the session > is live with the same process id. Hmm - some signalling glitch presumably. Was it not possible to identify the client and disconnect that? > Using the SysInternals process explorer - there doesn't appear to be a > process with the given ID. > > How can I get postgres to drop this session? You could try pg_cancel_backend() - not sure what happens if it can't find the process though. http://www.postgresql.org/docs/8.2/static/functions-admin.html -- Richard Huxton Archonet Ltd
Use "select pg_cancel_backend(<pid>)" instead -- we have to do this periodically when queries get timed out by the web server but Postgres doesn't notice / doesn't get notified... - Bill -----Original Message----- From: pgsql-general-owner@postgresql.org [mailto:pgsql-general-owner@postgresql.org] On Behalf Of Howard Cole Sent: Thursday, November 29, 2007 5:55 AM To: 'PgSql General' Subject: [GENERAL] Killing a session on windows I have a database I want to drop on a windows server. Unfortunately I cannot restart postgres because it is running several live database. To kill the offending session, I tried select * from pg_stat_activity to find the PID of the session, and then tried to kill it with command line: taskkill /f /pid 1234 This appeared to kill the session, but postgres still thinks the session is live with the same process id. Using the SysInternals process explorer - there doesn't appear to be a process with the given ID. How can I get postgres to drop this session? Thanks Howard Cole www.selestial.com ---------------------------(end of broadcast)--------------------------- TIP 1: if posting/reading through Usenet, please send an appropriate subscribe-nomail command to majordomo@postgresql.org so that your message can get through to the mailing list cleanly