INF: Informazioni come il componenti Transact-SQL KILL comando Works

Traduzione articoli Traduzione articoli
Identificativo articolo: 171224 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

Il comando Transact-SQL KILL viene utilizzato per improvvisamente terminare un processo di SQL Server. Ogni processo viene spesso chiamato un ID di processo di sistema (spid). Il pulsante del processo di SQL Enterprise Manager Kill in attivitÓ corrente invia semplicemente un comando KILL in Transact-SQL al server, in modo che il meccanismo KILL lato server sia lo stesso in questo caso.

Un spid pu˛ rispondere al comando KILL immediatamente dopo un ritardo o non. Un comando KILL ritardato o non risponde pu˛ essere normale in alcune condizioni. In questo articolo viene illustrato il funzionamento del comando KILL, che cosa sono le condizioni di ritardata o non di risposta e come per identificarli.
NOTE: In questo articolo viene descritto un comando DBCC (PSS DBCC) che non Ŕ supportato e potrebbe causare un comportamento imprevisto. Microsoft non garantisce la che Ŕ possibile risolvere i problemi derivanti dall'errato utilizzo di questo comando DBCC. Utilizzare questo comando DBCC a proprio rischio. Questo comando DBCC non Ŕ disponibile nelle versioni future di SQL Server. Per un elenco dei comandi DBCC supportati, vedere l'argomento di "DBCC" nella sezione relativa a Transact-SQL della documentazione in linea di.

Informazioni

Ciascuna connessione al database costituisce una riga nella tabella sysprocesses, detta anche un ID di transazione spid o processo di sistema. Nella terminologia di SQL Server, ciascuna connessione viene anche denominato "processo", ma ci˛ non implica un contesto di processo separato nel normale senso del termine. In SQL Server 6.0 e 6.5, ogni processo equivale approssimativamente a e servito da un thread separato del sistema operativo. Ogni connessione di database sono inoltre delle strutture di dati server in cui tenere traccia di stato del processo, lo stato della transazione, blocchi e cosý via. Una di queste strutture viene chiamata il processo stato struttura (PSS), di cui Ŕ disponibile per ogni connessione. Il server esamina l'elenco di PSSs per materializzare tabella sysprocesses virtuale. Le colonne della CPU e physical_io di sysprocesses sono derivate dai valori equivalenti in ogni PSS.

I Transact-SQL KILL comando post che un "kill manualmente" messaggio alla struttura di slot dello spid processo. Visualizzato come un bit di stato, che lo spid interroga periodicamente. Se lo spid sta eseguendo un percorso di codice che non interrogato il campo PSS dello stato, il KILL non Ŕ rispettate. Vengono forniti alcune condizioni noti in cui questa situazione pu˛ verificarsi di seguito. La maggior parte di questi vengono considerata il comportamento previsto e non sono considerata errori.

SPID Ŕ in attesa su una rete I/O

Se il client non recupera tutte le righe di risultato, il server alla fine viene forzato di attesa durante la scrittura il client. Questo Ŕ considerato un sysprocesses.waittype di 0x0800. Durante l'attesa della rete, possono interrogare il servizio clienti e rilevare un comando KILL non SQL Server viene eseguito codice che. Se lo spid contiene blocchi prima in attesa di I/O di rete, Ŕ possibile bloccare altri processi.

Se la connessione di rete scade o viene manualmente annullata, il thread SQL in attesa della rete che i/o avranno un errore restituito, l'in questo modo viene liberata fino a consente di analizzare la PSS e rispondere a un KILL. ╚ possibile chiudere manualmente una connessione named pipe con la sessione di NET comando NET FILES o comando equivalente di Server Manager. Altre sessioni IPC, ad esempio TCP/IP e SPX/IPX non possono essere chiuso manualmente e l'opzione solo in questo caso Ŕ regolazione il timeout della sessione per IPC particolare su un valore pi¨ breve. Per ulteriori informazioni, vedere il seguente articolo della Microsoft Knowledge Base riportato di seguito:
137983: risoluzione dei problemi connessioni orfane in SQL Server


Lo SPID ╚ rollback (chiamato anche essere "in back-out")

Se la transazione viene interrotta per qualsiasi motivo, Ŕ necessario ripristinare. Se si tratta di una transazione a esecuzione prolungata, potrebbe richiedere tempo eseguire il rollback come applicare la transazione. Include transazioni implicite con esecuzione prolungata come singole istruzioni SELECT INTO, DELETE o UPDATE. Mentre sta annullando non pu˛ essere eliminato; in caso contrario, le modifiche transazionali verrÓ eseguito non il in modo coerente.

Lo scenario di ripristino unkillable spesso pu˛ essere identificato osservando l'output di sp_who, che potrebbe indicare il comando ROLLBACK. In SQL Server versione 6.5 Service Pack 2 o versione successiva, uno stato ROLLBACK Ŕ stato aggiunto a sysprocesses.status, verrÓ visualizzata anche nell'output di sp_who o SQL Enterprise Manager "attivitÓ corrente" dello schermo. Tuttavia il modo pi¨ affidabile per ottenere questa informazione consiste nell'ispezionare il DBCC PSS dello SPID all'origine del blocco in questione e osservare il valore di pstat. Ad esempio:
dbcc traceon(3604) /* Return subsequent DBCC output to the client rather
                      than to the errorlog. */ 
go
SELECT SUID FROM SYSPROCESSES WHERE SPID=<unkillable SPID number>
go
DBCC PSS (suid, spid, 0) /* Where suid is from above, and spid is the
                           unkillable SPID number. */ 
go
				

La prima riga di informazioni restituite conterrÓ il valore di pstat.

Potrebbero ad esempio essere presenti informazioni simili a quelle riportato di seguito:
Pstat = 0 x 4000, 0 x 800, 0 x 100, 0 x 1

Significati del valore di PSTAT:
0x4000 -- Delay KILL and ATTENTION signals if inside a critical section
0x2000 -- Process is being killed
0x800  -- Process is in backout, thus cannot be chosen as deadlock victim
0x400  -- Process has received an ATTENTION signal, and has responded by
          raising an internal exception
0x100  -- Process in the middle of a single statement transaction
0x80   -- Process is involved in multi-database transaction
0x8    -- Process is currently executing a trigger
0x2    -- Process has received KILL command
0x1    -- Process has received an ATTENTION signal
				

Il valore di pstat riportato sopra sarebbe una situazione tipica, se Ŕ stata annullata una modifica di dati a esecuzione prolungata (ad esempio, utilizzando il pulsante Annulla Query in un'applicazione GUI) e quindi lo SPID Ŕ stato trovato (per un periodo di tempo) per impedire agli utenti, ancora essere unkillable. Questa situazione Ŕ normale e la transazione deve essere annullata. Pu˛ essere identificato dai bit, come indicato in precedenza.

SPID 1 ╚ un stato di 0000 (ripristino in esecuzione)

Quando l'avvio (o il riavvio) SQL Server, ogni database deve essere completata ripristino avvio prima che pu˛ essere utilizzato. Questo Ŕ considerato il primo spid in sp_who con lo stato di 0000. Non pu˛ essere eliminato, e ripristino deve essere autorizzato all'esecuzione fino al completamento senza riavviare il server. Solo utente possono essere interrotti spids, non del sistema spids quali lazywriter, checkpoint, RA Manager e cosý via. ╚ inoltre Impossibile interrompere proprio spid. ╚ possibile trovare il valore spid ovvero eseguendo SELECT @@ SPID.


Server Ŕ intenzionalmente ritardo rispettare KILL

In alcuni casi, il server rinvia intenzionalmente agisce su un comando KILL o di un segnale ATTENTION (una richiesta di annullamento query). Un esempio Ŕ in una sezione critica. Questi intervalli sono in genere brevi. Questa situazione pu˛ essere considerata come un valore di pstat pari a 0 x 4000.

Percorso di codice non cerca KILL

Se si sia eliminata ognuno degli scenari precedenti, Ŕ possibile che il percorso di codice corrente semplicemente non ne verifica per KILL. Ad esempio, prima di SQL Server versione 6.5 con Service Pack 3, DBCC CHECKDB non affidabile risponde alle KILL poichÚ alcuni percorsi del codice non controllare. Se sono state escluse tutte le situazioni sopra (vale a dire il processo di utente non Ŕ in attesa di I/O e non di rollback, il database non in ripristino e SQL Server non viene intenzionalmente rinviando KILL) ancora KILL non Ŕ vengano rispettate, Ŕ possibile migliorare il server in modo che KILL funziona. Per effettuare questa operazione, Ŕ necessario esaminare singolarmente ciascun caso dal provider del servizio di supporto.

Altre informazioni

Il fatto che il messaggio "Id processo 10 interrotta dal nome host JOE" Ŕ scritto il log degli errori non conferma che KILL effettivamente ha avuto luogo. Questo messaggio viene scritto immediatamente dopo che effettua la richiesta di interruzione, ma non indicare che Ŕ stata applicare il KILL.

ProprietÓ

Identificativo articolo: 171224 - Ultima modifica: martedý 28 ottobre 2003 - Revisione: 3.0
Le informazioni in questo articolo si applicano a:
  • Microsoft SQL Server 6.0 Standard Edition
  • Microsoft SQL Server 6.5 Standard Edition
Chiavi:á
kbmt kbinfo kbusage KB171224 KbMtit
Traduzione automatica articoli
Il presente articolo Ŕ stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non Ŕ sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pi¨ o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non Ŕ la sua. Microsoft non Ŕ responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 171224
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.
Dichiarazione di non responsabilitÓ per articoli della Microsoft Knowledge Base su prodotti non pi¨ supportati
Questo articolo Ŕ stato scritto sui prodotti per cui Microsoft non offre pi¨ supporto. L?articolo, quindi, viene offerto ?cosý come Ŕ? e non verrÓ pi¨ aggiornato.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com