ऐसे परिदृश्य हैं जहां SET NOCOUNT ON अनिवार्य है। एसक्लक्लाइंट की BeginExecuteXXX विधियों के माध्यम से थ्रेड पूल का लाभ उठाने वाले अतुल्यकालिक प्रसंस्करण के आधार पर एक उच्च प्रदर्शन मध्य स्तरीय डिजाइन करते समय, पंक्ति गणना के साथ एक बहुत ही गंभीर समस्या है। जैसे ही पहली . की शुरुआत होती है, BeginExecute विधियां पूरी हो जाती हैं प्रतिक्रिया पैकेट सर्वर द्वारा वापस कर दिया जाता है। लेकिन जब एक EndExecuteXXX लागू किया जाता है, तो यह कॉल पूर्ण होने पर गैर-क्वेरी अनुरोधों पर पूरा होता है। प्रत्येक पंक्ति गणना प्रतिक्रिया एक प्रतिक्रिया है। मामूली जटिल प्रक्रियाओं को संसाधित करते समय पहली पंक्ति की गिनती 5-10 एमएस में वापस आ सकती है, जबकि कॉल 300-500 एमएस में पूरी होती है। सबमिट किए गए async अनुरोध को 500ms के बाद वापस कॉल करने के बजाय, यह 5 ms के बाद वापस कॉल करता है और फिर 495 ms के लिए EndExecuteXXX में कॉलबैक ब्लॉक करता है। इसका परिणाम यह होता है कि एसिंक्रोनस कॉल समय से पहले पूरी हो जाती है और EndExecuteNonQuery कॉल में थ्रेड पूल से थ्रेड को ब्लॉक कर देती है। यह थ्रेडपूल भुखमरी की ओर जाता है। मैंने देखा है कि विशिष्ट परिदृश्यों पर केवल SET NOCOUNT ON जोड़कर उच्च प्रदर्शन प्रणालियाँ सैकड़ों कॉल प्रति सेकंड से हज़ारों कॉल प्रति सेकंड तक थ्रूपुट में सुधार करती हैं।
यह देखते हुए कि उच्च स्तर/उच्च थ्रूपुट मध्य स्तरीय प्रसंस्करण के लिए एसिंक्रोनस कॉल जाने का एकमात्र तरीका है, NOCOUNT काफी अनिवार्य आवश्यकता है।