"TASK MANAGER" प्रक्रिया एकल-उपयोगकर्ता मोड डेटाबेस पर ले जा रही है। यह क्या है?


13

यह सवाल मैं पर पूछा का डुप्लिकेट है stackoverflow , लेकिन मैं सलाह दी गई थी, कि किसी को यहाँ एक बेहतर विचार क्या हो रहा है हो सकता था।

मुझे एक छिटपुट समस्या है, जब एक एकल-उपयोगकर्ता मोड में SQL सर्वर को अपग्रेड करते हुए, .NET SqlConnection का उपयोग करते हुए, कुछ अन्य एप्लिकेशन किसी तरह डेटाबेस में लॉग इन करते हैं, जबकि SQL कोड निष्पादित हो रहा है, और मेरी प्रक्रिया को किक करता है। SqlConnection किसी भी तरह से बंद या निपटाया नहीं जाता है। लेकिन कुछ अन्य अनुप्रयोग किसी न किसी तरह डेटाबेस से जुड़े रहते हैं और इससे मेरा कनेक्शन बाहर हो जाता है।

जब मैं sp_who चलाता हूं, तो मैं देख सकता था कि डेटाबेस को नियंत्रित करने वाली एक प्रक्रिया है Command = "TASK MANAGER"।

कोई भी मुझे बता सकता है कि यह प्रक्रिया क्या है, इसका उद्देश्य क्या है, और दुनिया में यह एक डेटाबेस में कैसे मिल सकता है, जो एकल-उपयोगकर्ता मोड में है, और एक सक्रिय कनेक्शन है?


क्या आप इस प्रक्रिया के दौरान SQL एजेंट बंद करते हैं? "TASK MANAGER" (कम स्पाइड नंबरों के साथ) नामक कार्य आंतरिक प्रक्रियाएं हैं।
जॉन सिगेल

@JonSeigel नहीं, मैंने नहीं किया। क्या आप कह रहे हैं कि SQL एजेंट एक वास्तविक प्रक्रिया है जो TASK प्रबंधक को चलाता है?
१६:५० पर

मुझे 100% यकीन नहीं है। मुझे क्या पता है कि SQL एजेंट चल रहा है जब उदाहरण से जोड़ता है, और यह आपको लॉग-इन से रोक सकता है जबकि सर्वर एकल-उपयोगकर्ता मोड में है। कल मुझे वह समस्या थी, और एसक्यूएल एजेंट ने रोक दिया।
जॉन सीगल

2
बस स्पष्ट होने के लिए, यह वही टास्क मैनेजर नहीं है जिसका उपयोग आप विंडोज में प्रक्रियाओं और सिस्टम के प्रदर्शन को देखने के लिए करते हैं।
हारून बर्ट्रेंड

जवाबों:


10

आज भी यही समस्या थी, यदि आपने अपना AUTO_UPDATE_STATISTICS ASYNC बंद नहीं किया है, तो आप अपने डेटाबेस में प्रवेश नहीं कर पाएंगे, आप अपने डेटाबेस को ऑफ़लाइन डालकर इसे हल कर सकते हैं। यह जानना महत्वपूर्ण है कि आपको अपने गतिरोध की प्राथमिकता को उच्च पर सेट करने की आवश्यकता है, अन्यथा आप कमांड से बाहर कर दिए जाएंगे। SINGLE उपयोगकर्ता मोड से बाहर निकलने के लिए निम्न आदेशों का उपयोग करें

SET DEADLOCK_PRIORITY HIGH

ALTER DATABASE [YourDBName] SET OFFLINE WITH ROLLBACK IMMEDIATE

के बाद

SET DEADLOCK_PRIORITY HIGH

ALTER DATABASE [YourDBName] SET ONLINE WITH ROLLBACK IMMEDIATE

के बाद

SET DEADLOCK_PRIORITY HIGH

ALTER DATABASE [YourDBName] SET MULTI_USER WITH ROLLBACK IMMEDIATE

3
इसके लिए आपको बहुत धन्यवाद। हालाँकि मैंने पाया कि ऑफ़लाइन / ऑनलाइन कदम की आवश्यकता नहीं थी; SET MULTIUSER WITH ROLLBACK IMMEDIATEजब SET DEADLOCK_PRIORITY HIGHपहली बार किया गया था तो बस खुद से काम किया था
रॉस प्रेसर

6

मुझे लगता है कि रहस्य आखिरकार हल हो गया :

इससे पहले कि आप डेटाबेस को SINGLE_USER पर सेट करें, सत्यापित करें कि AUTO_UPDATE_STATISTICS_ASYNC विकल्प बंद पर सेट है। जब चालू किया जाता है, तो आँकड़े अद्यतन करने के लिए उपयोग किया जाने वाला बैकग्राउंड थ्रेड डेटाबेस के विरुद्ध एक कनेक्शन लेता है, और आप डेटाबेस को सिंगल-यूज़र मोड में एक्सेस करने में असमर्थ होंगे।


6

"System_health" विस्तारित ईवेंट ट्रेस को रोकें। इसके तहत सूचीबद्ध किया जाएगा

SQL Server Management Studio
-> [ServerName]
-> Management
-> Extended Events
-> Right-Click on 'System_health'
-> Hit Stop Session

अवरोधक ठीक हो जाने के बाद, सत्र को पुनः आरंभ करें।


यद्यपि दूसरा उत्तर बताता है कि ऐसा क्यों होता है, यह बताता है कि इसे कैसे हल किया जाए।
बोरिस

मेरे लिए पूर्ण संकल्प। यह उम्मीद के
मुताबिक

0

आपको 'सिंगल यूज़िंग मोड' शुरू करने से पहले SQL एजेंट को निष्क्रिय करना होगा। एजेंट accout के रूप में एकल उपयोगकर्ता पहुंच को हड़प लेगा। एकल उपयोगकर्ता को रिमाइबर करें आप इसे कनेक्ट करने वाले पहले उपयोगकर्ता / प्रक्रिया नहीं हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.