2009-07-07 10 views
6

मान लीजिए कि आप अपने कोड से निम्नलिखित (लंबी चलने वाली) प्रक्रिया पर अमल करते हैं:आप एक एसक्यूएल सर्वर निष्पादन प्रक्रिया कैसे रद्द कर सकते हैं प्रोग्राम के रूप में

int processID = DB.Execute(SQL); //some long running sql statement 

वहाँ एक रास्ता प्रोग्राम के प्रक्रिया करता है, तो रद्द करने के लिए एसक्यूएल सर्वर कॉल कर सकता यह बहुत लंबा समय ले रहा है (जैसे QueryAnalyzer में "स्टॉप" बटन मारना)?

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

कृपया अपने टैग विकल्पों पर अधिक ध्यान दें - टैग यह है कि आप अपने प्रश्न को उचित दर्शकों से कैसे जोड़ते हैं। –

उत्तर

4

Kill @Spid

ध्यान दें कि यह एक अंतिम प्रयास है। प्रक्रिया को मारने के लिए आपको क्लाइंट पर कनेक्शन बंद करना चाहिए।

+0

बस जागरूक रहें कि आप अपने स्वयं के स्पिड को मार नहीं सकते हैं, आपको एक और कनेक्शन बनाने की आवश्यकता है और फिर – SQLMenace

5

प्रक्रिया आईडी के साथ प्रयोग के KILL:

KILL 53; 

बस ध्यान रखें कि आप अपने खुद के spid नहीं मार सकते हो, तो आप एक कनेक्शन बनाने के लिए और फिर मारने

से spid जरूरत है अगर आप अपनी खुद की SPID मारने की कोशिश आप इस प्रकार, निम्न त्रुटि

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

आप अपनी क्वेरी एसिंक्रोनस रूप से चलाने के लिए है मिल जाएगा:

+०१२३५१६४१०६१
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(); 

आदेश रद्द करने के लिए, इस चलाएँ:

_anotherCommand.EndExecuteNonQuery(_anotherCommandStarted); 
+1

से स्पिड को मारने के लिए BeginExecuteNonQuery() सुझाव अच्छा है, लेकिन EndExecuteNonQuery कमांड को रद्द नहीं करता है - यह आदेश पूर्ण होने तक ब्लॉक करता है । – Mike

0
sp_who2 

प्रक्रिया की सूची

Find you SPID 

Kill SPID 

प्रदर्शित करता है त्रुटि संदेश आप अपने खुद के प्रक्रिया को नहीं मार सकते हैं

देखें कि आपके प्रबंधन स्टूडियो में प्रक्रिया रंड कहां है और इसे रोकें।

या वर्तमान कनेक्शन बंद करें और फिर से खोलें और अभी मारने का प्रयास करें।

संबंधित मुद्दे

 संबंधित मुद्दे