2013-02-21 13 views
9

Sto tentando di utilizzare un'istruzione KILL con una variabile dichiarata, ma mi dà un errore di sintassi. È comunque necessario non utilizzare una costante e modificare in modo programmatico lo SPID?Utilizzo di KILL con una variabile dichiarata

Ad esempio:

DECLARE @SPID smallint 
SET @SPID = 100 
Kill @SPID 

BTW questo è solo un esempio. Ho bisogno di eseguire l'uccisione in un ciclo con un cursore per sbarazzarsi di vecchie connessioni utente persistenti. (Non chiedere)

risposta

13

Penso che avrete bisogno di SQL dinamico per questo. Leggi this essential page prima di fare qualsiasi cosa con SQL dinamico, per favore.

DECLARE @SPID smallint 
DECLARE @SQL nvarchar(1000) 

SET @SPID = 100 

SET @SQL = 'KILL ' + CAST(@SPID as varchar(4)) 

EXEC (@SQL) 
1

Si può sempre fare questo tramite SMO così, utilizzando PowerShell o C#:

http://msdn.microsoft.com/en-gb/library/microsoft.sqlserver.management.smo.server.killprocess(v=sql.110).aspx

Questo tipo di gestione di SQL Server e il codice che ne consegue, è proprio quello di PowerShell e SMO è bravo a, e T-SQL a volte può essere un po 'complicato.

+1

Una lunga strada da percorrere per un giro davvero breve – JVC

+0

Sì, per questo esempio, ma puoi fare così tanto con SMO una volta capito. Imparare a usarlo (e PowerShell) apre una serie di opportunità per l'ottimizzazione e l'automazione della gestione del server SQL. – steoleary

Problemi correlati