Identificarte

Versión Completa : Kill


Sponsored links
.




HRC-Akkanne
mayo 31, 2005, 01:05
Buenas tardes :

En este momento estoy tratando de hacer un procedimiento almacenado sobre un bd en SQL Server 2003 que busca destruir todas las sesiones huerfanas en una base de datos :


Declare @Cont as Integer
Declare @TotRegistros as Integer
Declare @IdProceso as smallint

Set @Cont = 0
Set @TotRegistros = (Select Count(Spid) From SysProcesses Where datediff(mi,last_batch,getdate())> 30)

While @Cont <= @TotRegistros
Begin
Set @IdProceso = (Select top 1 Spid From SysProcesses Where datediff(mi,last_batch,getdate())> 30 and Program_Name = 'Cobra XXI')
-- Print @IdProceso
Kill @IdProceso
Set @Cont = @Cont + 1
End

Cabe aclarar que estoy tratando de ejecutar las sentencias sobre la master (Podría ser este el error???)

Cuando trato de ejecutarlo, me dice que tengo un error cerca a : Kill @IdProceso

Pero en cuanto sintaxis no tengo error o por lo menos no uno que alcance a identificar.
Creo suponer que se debe al tratar de realizar el Kill enviando el id del proceso como un parametro; pero desafortunadamente debo hacerlo así.

Si alguien tiene idea y me puede guiar se lo agradecería mucho...

Salud2 :(

§en§ei Ħaφnu§
junio 2, 2005, 10:22
Kill @IdProceso está errado porque Kill es una instrucción que debe estar seguida de un nombre de proceso, no de una variable. No se si logro explicarme, es como poner:
Declare @Sql as str
Set @Sql = 'Id, Nombre'

Select @Sql From Pacientes
Esa instrucción no es válida porque no puedes poner tan alegremente una variable en medio de una instrucción SQL. El caso con Kill es el mismo.

Para que funcione, tienes que construir la instrucción dentro de una cadena y luego ejecutarla:
EXEC('Kill ' + @IdProceso)

HRC-Akkanne
junio 3, 2005, 12:36
Gracias en efecto ese fue el problema y lo solucione de la forma como recomendaste.

Este foro ya puede cerrarse.