Обсуждение: 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