SQL Server Kill SPID

SQL Server Kill SPID
L'ID processo SPID o SQL Server è un valore univoco assegnato a una sessione quando si collega a un'istanza SQL Server. Ad esempio, se si utilizza uno strumento come JetBrains Data Grip per connettersi al server SQL, il server SQL assegna un ID sessione univoco che contiene spazio e portata di memoria autonomi. Ciò significa che il SPID non può interagire con altri SPID sul server.

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;
ANDARE
Exec SP_WHO;
ANDARE

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;
ANDARE
EXEC SP_WHO 'CSALEM \ CS';
ANDARE

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',
System_user come 'login_name',
Utente come "nome utente"

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 1
Il rapporto sullo stato non può essere ottenuto. L'operazione di rollback per il processo ID 84 non è in corso.

L'esempio seguente mostra come terminare un backup del database in esecuzione usando il comando Kill Spid.

Inizia il backup come:

Database di backup [WideWorldImporters]
Su disco = n'c: \ Programmi \ Microsoft SQL Server \ MSSQL15.Mssqlserver \ mssql \ backup \ wwi_backup.bak '
Con noformat, name = n '\ wwi_backup', compressione, stat = 10;
ANDARE

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.