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