SQL Server utilizza valori SPID inferiori a 50 per i processi del server interno, mentre qualsiasi valore SPID superiore a 51 (inclusivo) è assegnato ai processi utente.
In questa guida, capirai come ottenere valori SPID in SQL Server e come uccidere una transazione usando il suo SPID.
SQL Server mostra SPID
In SQL Server, ci sono vari modi per ottenere il SPID dei processi in esecuzione. Questa guida esaminerà il più comune e facile da usare.
sp_who (transact-sql)
SP_WHO è una procedura di supporto che consente di visualizzare le informazioni dell'utente, le sessioni e i processi di istanza SQL Server. Utilizzando questa procedura, è possibile filtrare informazioni specifiche, come il nome utente e il valore SPID.
La sintassi è come mostrata:
sp_who [[@loginame =] 'login' | ID sessione | 'ATTIVO' ]L'accesso si riferisce al sistema che identifica un processo per un accesso specifico.
L'ID sessione è il valore SPID a un processo specifico connesso al server SQL.
Esempio di utilizzo
I seguenti comandi mostrano come utilizzare la procedura SP_WHO in SQL Server.
Mostra tutti i processi attuali
Per visualizzare tutti i processi attuali, utilizzare la query come mostrato:
Usa il master;La query sopra dovrebbe restituire le informazioni con colonne come SPID, ECID, Stato, Loginame e altro ancora.
Mostra il processo per un utente specifico
Per ottenere i processi associati a un utente specifico, possiamo specificare il nome utente nella query come mostrato nell'esempio seguente:
Usa il master;Il comando dovrebbe restituire le informazioni sul processo sull'accesso imposta. Un output di esempio è come mostrato:
@@ spid
Un altro metodo che puoi usare per ottenere il SPID di un processo è l'utilizzo della funzione @@ SPID. Questa funzione di configurazione restituisce l'ID sessione del processo corrente.
Esempio di utilizzo
L'esempio seguente mostra come utilizzare @@ spid per recuperare informazioni su un processo specifico.
Seleziona @@ spid come 'id',La query restituisce il SPID, il loginame e il nome utente. L'output di esempio è come mostrato:
Monitor di attività
È inoltre possibile utilizzare un metodo grafico per visualizzare il valore ID sessione per un processo specifico. Avvia lo studio MS SQL Server Management e fai clic con il pulsante destro del mouse sull'istanza SQL Server. Monitor dell'attività aperta.
Fai clic sulla scheda Processo per mostrare SPID, Login, database e ulteriori informazioni. Le informazioni visualizzate dal monitor attività sono come mostrate:
SQL Server Kill SPID
A volte, potresti incontrare un'istanza specifica che corre lenta, bloccando altri processi o consumando risorse di sistema. Puoi terminare il processo usando il suo SPID.
Il comando Kill SPID consente di specificare un valore SPID utente specifico e terminare il processo. Una volta che si chiama il comando, SQL Server eseguirà un processo di rollback (annullamenti); Quindi potrebbe richiedere del tempo per interrompere un processo esteso.
Di seguito mostra la sintassi del comando Kill Spid:
Kill session id [con statusonly] | Uow [con statusonly | Commit | Rollback]Esempio di utilizzo
Passa il valore ID sessione per utilizzare il comando Kill Spid (impara a ottenere il valore SPID sopra).
Uccidere 90;Il comando sopra dovrebbe arrestare il processo specificato.
Per ottenere l'avanzamento della terminazione del processo, è possibile utilizzare l'argomento con statysonly come mostrato:
Uccidi 84 con statusonly;Il comando sopra dovrebbe restituire il progresso come:
MSG 6120, Livello 16, Stato 1, linea 1L'esempio seguente mostra come terminare un backup del database in esecuzione usando il comando Kill Spid.
Inizia il backup come:
Database di backup [WideWorldImporters]Usando il comando Kill SPID, termina il processo di backup.
Conclusione
In questo articolo, hai imparato a lavorare con gli ID sessione SQL Server. Vari metodi per recuperare il valore SPID e terminare un processo utilizzando il valore SPID.