प्रबंधन स्टूडियो में काम अटक गया, आप उन्हें कैसे संभालते हैं?


13

प्रबंधन स्टूडियो में "टेक डेटाबेस ऑफलाइन" पर क्लिक करने के बाद यह संदेश लटका रहता है और यदि आप पास पर क्लिक करते हैं तो बंद नहीं होगा।

https://i.imgur.com/KD6AROv.png

प्रबंधन स्टूडियो में इन जैसी अटकी नौकरियों से निपटने का एक अच्छा तरीका क्या है? क्या आप गतिविधि की निगरानी के माध्यम से उन्हें मार सकते हैं? क्या मुझे इस प्रक्रिया को रोकना चाहिए और इसे समाप्त करने से रोकना चाहिए?


4
पता लगाएँ कि यह क्या अवरुद्ध है, पहले। आप यह जानकारी sysinos_exec_requests से प्राप्त कर सकते हैं। इसके अलावा, आपका काम इस तरह से हो सकता है कि यह अवरुद्ध न हो, जैसे ALTER DATABASE foo SET SINGLE_USER WITH ROLLBACK IMMEDIATE;पहले जारी करके ... अन्यथा यह बस बैठता है और इंतजार करता है, और एक व्यस्त डेटाबेस के लिए, यह हमेशा के लिए हो सकता है।
हारून बर्ट्रेंड

डेटाबेस को single_user में सेट करने से समस्या हल हो गई, मुझे अनुमान लगाना चाहिए ... इस तरह के सामान के लिए SQLserver को हमेशा सिंगल_युसर की आवश्यकता होती है।
a_V

जवाबों:


13

मैं कहूंगा कि जीयूआई में कभी भी "टेक ऑफलाइन" चीज का उपयोग न करें जब तक कि आप इस तथ्य के लिए नहीं जानते कि डेटाबेस उपयोग में नहीं है। किसी भी चीज से। कुछ लेगवर्क किए बिना यह जानना कठिन है, तो क्यों न इस स्क्रिप्ट को कहीं बचा लिया जाए और हमेशा इसका उपयोग किया जाए?

USE [master];
GO
ALTER DATABASE $dbname$ SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
ALTER DATABASE $dbname$ SET OFFLINE;

और फिर निश्चित रूप से पारस्परिक:

ALTER DATABASE $dbname$ SET ONLINE;
GO
ALTER DATABASE $dbname$ SET MULTI_USER;

कारण यह है कि आपको इसे SINGLE_USERपहले सेट करने की आवश्यकता है किसी भी मौजूदा उपयोगकर्ताओं को बाहर निकालने के लिए (डिटैच डायलॉग पर ऐसा करने का एक विकल्प है, लेकिन ऑफ़लाइन संवाद नहीं है), क्योंकि SQL सर्वर को डेटाबेस तक पहुंचने के लिए अनन्य एक्सेस की आवश्यकता होती है यह ऑफ़लाइन है। अब, आप वैसे भी कुछ अतिरिक्त कार्य करना चाह सकते हैं, यह देखने के लिए कि वर्तमान में डेटाबेस का उपयोग कौन कर रहा है, जैसे कि आप बड़े बैकअप ऑपरेशन या ईटीएल नौकरी के बीच में ऐसा करते हैं या आपके पास क्या है, जो समस्याग्रस्त हो सकता है।

संपादित करें : मैं इस बारे में कनेक्ट पर एक सुझाव दायर की है (देखें कनेक्ट # 2,687,832 ) और यह भी करने के लिए इसे पोस्ट किया है Trello (के तहत "वस्तु एक्सप्लोरर" दायर)।


और क्या होगा यदि एकल उपयोगकर्ता सेट करना भी विफल हो जाता है क्योंकि यह डेटाबेस पर लॉक प्राप्त नहीं कर सकता है?
स्टैकऑवरथ्रो

@ user560822 आपको तब तक इंतजार करना होगा जब तक आप डेटाबेस पर ताला नहीं लगा सकते। कि साधन आपके पास सत्र की हत्या शुरू करने के लिए है ...
हारून बर्ट्रेंड

9

जब आप पहले से ही फांसी की स्थिति में हों, तो यह न भूलें कि आप सर्वर के साथ खुले कनेक्शन की खोज कर सकते हैं

sp_who2  

एक अन्य डेटाबेस में, जैसे कि मास्टर।
उन सभी परिणामों के लिए स्कैन करें जहां डेटाबेस वह है जिसे आप ऑफ़लाइन लेने का प्रयास कर रहे हैं।
उन पंक्तियों के स्पिड (प्रोसेस आईडी) कॉलम मूल्य पर ध्यान दें।

एक बार में, भागो

kill  ##

जहां "##" स्पिड है।

निश्चित रूप से यह सुनिश्चित करने के लिए ध्यान रखें कि उन प्रक्रियाओं को चलाना महत्वपूर्ण नहीं है ... उन्हें नवीनतम कमांड को पूरा किए बिना और चेतावनी के बिना भी समाप्त किया जाएगा।


1
स्वीकृत उत्तर ने मेरे लिए चाल नहीं चली। पहले कमांड पर विफल। यह जवाब पूरी तरह से काम करता है। धन्यवाद
Cheburek

यह अच्छा है :) हाँ, स्वीकृत उत्तर वास्तव में इस मुद्दे से बचने के लिए है ... यदि आप पहले से ही त्रिशंकु हैं, तो आपको इसे मारने के लिए कुछ इस तरह की आवश्यकता है
माइक एम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.