Thread: Killing a session on windows

Killing a session on windows

From
Howard Cole
Date:
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

Re: Killing a session on windows

From
Richard Huxton
Date:
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

Re: Killing a session on windows

From
"Bill Bartlett"
Date:
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