2009-07-07 20 views
6

Diyelim ki senin kodundan aşağıdaki (uzun süren) işlemi yürütmek var diyelim Çok uzun sürüyor (QueryAnalyzer'daki "Stop" düğmesine basmak gibi)? Bu bir son çaba olduğunuprogramlı

//cancel the process if it is taking too long 
DB.Execute("sp_CancelProcess @ProcessID=" + processID); 
+1

Lütfen etiket seçimlerinize daha fazla dikkat edin - etiketler, sorunuzu ilgili kitleye nasıl bağladığınızdır. –

cevap

4

Kill @Spid

not. İşlemi öldürmek için müşteri üzerindeki bağlantıyı kapatmanız gerekir. süreç kimliği ile

+0

Sadece kendi spidinizi öldüremeyeceğinizin farkında olun, başka bir bağlantı oluşturmanız ve sonra spid'i – SQLMenace

5

kullanım KILL:

KILL 53; 

Sadece kendi spid kill olamaz unutmayın, sen

gelen spid başka bağlantı oluşturmak ve sonra öldürmek gerekir eğer aşağıdaki gibi kendi SPID'yi öldürmeye çalışacak Eğer

Server: Msg 6104, Level 16, State 1, Line 1 
Cannot use KILL to kill your own process. 
0

sen uyumsuz Sorgunuzla koşmak zorunda aşağıdaki hatayı alırsınız:

SqlConnection _anotherConnection; 
    SqlCommand _anotherCommand; 
    IAsyncResult _anotherCommandStarted; 
    _anotherCommand = _anotherConnection.CreateCommand(); 
    _anotherCommand.CommandText = string.Format("SET DEADLOCK_PRIORITY HIGH; BEGIN TRANSACTION; {0};", hookCommand); 
    _anotherCommand.CommandType = CommandType.Text; 
    _anotherCommand.ExecuteNonQuery(); 
    _anotherCommand.CommandText = "UPDATE Data.Hook1 SET i=1-i"; 
    _anotherCommandStarted = _anotherCommand.BeginExecuteNonQuery(); 

komutunu iptal etmek için bu çalıştırın: sürecinin

_anotherCommand.EndExecuteNonQuery(_anotherCommandStarted); 
+1

'dan başlatmanız gerekir. BeginExecuteNonQuery() önerisi iyidir, ancak EndExecuteNonQuery komutu iptal etmez - komut tamamlanana kadar bloklar . – Mike

0
sp_who2 

Liste

Find you SPID 

Kill SPID 

görüntüler hata mesajı kendi süreci öldürmek yapamıyorsanız

Sürecin yönetim stüdyosunda nereye gittiğini görün ve durdurun. Veya mevcut bağlantıyı kapatıp tekrar açıp şimdi öldürmeyi deneyin.