Spid terminado con KILL vuelve a aparecer

29/10/2009 - 23:25 por Javier Leal | Informe spam
Que tal, espero se encuentren bien, tengo un detalle con una base de
datos que no me deja en paz y no se en dónde está el problema, me
explico rápidamente.

Tengo un programa que se comunica a una base de datos y hace una
consulta "x" simple, hasta aquí vamos bien, este .exe está con varios
clientes (cada uno se conecta a su propia base de datos) y funciona
bien.. pero recibimos una llamada de un cliente que dice que cuando se
realiza la consulta "x" todos los demás equipos se quedan congelados,
que solamente cierran la pantalla de la consulta "x" y ya los deja
trabajar en las demás terminales.

Nos conectamos y efectivamente, mientras no hagan la consulta "x" todo
bien, en cuanto uno la haga los demás equipos se quedan en stand by
hasta que cierren la pantalla.

lo que se hizo fue ver que SPID estaban ejecutando, con la siguiente
instrucción:

select * from master..sysprocesses
where status = 'runnable'
AND Program_Name='Mi App'
order by CPU
desc

y este me arroja que el SPID 125 es el que me está bloqueando, teniendo
en el campo de CPU valores muy altos, entonces ejecutamos KILL 125 y
listo, ahora si permite que las demas terminales se puedan conectar.

El problema está que cuando alguien vuelve a abrir la consulta "x" otra
vez se vuelve a bloquear, y hay que correr el script anterior, cosas que
no es nada práctico.

Mi duda es.. como le puedo hacer para que una vez que le de kill no se
vuelva a bloquear, o que mas debo de hacer para que ya no me aparezca el
problema de nuevo???

Esto es lo que me arroja la consulta anterior:

spid 125
kpid 2540
blocked 0
waittime 10062
lastwaittype NETWORKIO
dbid 6
uid 0
cpu 79
physical_io 0
memusage 11
login_time 29-Oct-09 15:50:20
last_batch 29-Oct-09 15:50:20
ecid 0
open_tran 0
status runnable
hostname GAMMA
program_name Mi App
hostprocess 736
cmd SELECT
nt_domain GAMMA
nt_username Administrador
net_address 00192142013C
net_library LPC
loginame GAMMA\Administrador
stmt_start 88
stmt_end -1

Saludos!
 

Leer las respuestas

#1 Carlos Sacristan
30/10/2009 - 09:19 | Informe spam
Kill lo que hace es matar la conexión, pero si la consulta genera bloqueos,
cuando la vuelva a lanzar en la misma situación generará los mismos
bloqueos. Mira a ver qué ejecuta esa consulta y porqué bloquea a los demás
usuarios, algo que en principio no tiene mucho sentido si dices que cada uno
se conecta a una base de datos diferente

"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es fácil, si ambas están congeladas."
Edward V. Berard, ingeniero informático


"Javier Leal" wrote in message
news:e%

Que tal, espero se encuentren bien, tengo un detalle con una base de datos
que no me deja en paz y no se en dónde está el problema, me explico
rápidamente.

Tengo un programa que se comunica a una base de datos y hace una consulta
"x" simple, hasta aquí vamos bien, este .exe está con varios clientes
(cada uno se conecta a su propia base de datos) y funciona bien.. pero
recibimos una llamada de un cliente que dice que cuando se realiza la
consulta "x" todos los demás equipos se quedan congelados, que solamente
cierran la pantalla de la consulta "x" y ya los deja trabajar en las demás
terminales.

Nos conectamos y efectivamente, mientras no hagan la consulta "x" todo
bien, en cuanto uno la haga los demás equipos se quedan en stand by hasta
que cierren la pantalla.

lo que se hizo fue ver que SPID estaban ejecutando, con la siguiente
instrucción:

select * from master..sysprocesses
where status = 'runnable'
AND Program_Name='Mi App'
order by CPU
desc

y este me arroja que el SPID 125 es el que me está bloqueando, teniendo en
el campo de CPU valores muy altos, entonces ejecutamos KILL 125 y listo,
ahora si permite que las demas terminales se puedan conectar.

El problema está que cuando alguien vuelve a abrir la consulta "x" otra
vez se vuelve a bloquear, y hay que correr el script anterior, cosas que
no es nada práctico.

Mi duda es.. como le puedo hacer para que una vez que le de kill no se
vuelva a bloquear, o que mas debo de hacer para que ya no me aparezca el
problema de nuevo???

Esto es lo que me arroja la consulta anterior:

spid 125
kpid 2540
blocked 0
waittime 10062
lastwaittype NETWORKIO
dbid 6
uid 0
cpu 79
physical_io 0
memusage 11
login_time 29-Oct-09 15:50:20
last_batch 29-Oct-09 15:50:20
ecid 0
open_tran 0
status runnable
hostname GAMMA
program_name Mi App
hostprocess 736
cmd SELECT
nt_domain GAMMA
nt_username Administrador
net_address 00192142013C
net_library LPC
loginame GAMMA\Administrador
stmt_start 88
stmt_end -1

Saludos!

Preguntas similares