ম্যানেজমেন্ট স্টুডিওতে আটকে থাকা কাজ, কীভাবে আপনি এগুলি পরিচালনা করেন?


13

ম্যানেজমেন্ট স্টুডিওতে "ডাটাবেস অফলাইনে নিন" ক্লিক করার পরে এই বার্তাটি স্থির থাকে এবং আপনি যদি ক্লোজ ক্লিক করেন তবে বন্ধ হবে না।

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

ম্যানেজমেন্ট স্টুডিওতে এই জাতীয় আটকে থাকা কাজের সাথে মোকাবিলা করার একটি ভাল উপায় কী? ক্রিয়াকলাপ মনিটরের মাধ্যমে আপনি কি তাদের হত্যা করতে পারবেন? এই কাজটি বন্ধ করে দেওয়া এবং এই কাজটি বন্ধ করে দেওয়া কোন প্রক্রিয়াটি আমার উচিত উচিত?


4
প্রথমে এটি কীভাবে অবরুদ্ধ করছে তা সন্ধান করুন। আপনি sys.dm_exec_requests থেকে এই তথ্যটি পেতে পারেন। এছাড়াও আপনার কাজটি এমনভাবে করতে পারে যাতে এটি অবরুদ্ধ না হয়, যেমন ALTER DATABASE foo SET SINGLE_USER WITH ROLLBACK IMMEDIATE;প্রথমে জারি করে ... অন্যথায় এটি কেবল বসে থাকে এবং অপেক্ষা করে এবং একটি ব্যস্ত ডাটাবেসের জন্য, এটি চিরকালের জন্য হতে পারে।
অ্যারন বার্ট্র্যান্ড

একক_ ব্যবহারকারীর মধ্যে ডাটাবেস স্থাপন করা সমস্যাটি সমাধান করেছে, আমার অনুমান করা উচিত ... এসকিউএলসিভারের সর্বদা এই জাতীয় সামগ্রীর জন্য একক_ ব্যবহারকারী প্রয়োজন।
এ_ভি

উত্তর:


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প্রথমে এটি নির্ধারণ করার কারণটি যে কোনও বিদ্যমান ব্যবহারকারীদের কিক্সট করা (ডিফল্ট ডায়ালগের ক্ষেত্রে এটি করার বিকল্প রয়েছে, তবে অফলাইন ডায়ালগটি নয়), যেহেতু এসকিউএল সার্ভারকে ডাটাবেসে একচেটিয়া অ্যাক্সেসের প্রয়োজন এটি অফলাইন বর্তমানে, ডাটাবেসটি কে ব্যবহার করছেন তা দেখতে আপনি এখনই কিছু অতিরিক্ত লেগওয়ার্ক করতে চাইতে পারেন, আপনি যদি বড় ব্যাকআপ অপারেশন বা ইটিএল কাজের মাঝখানে এটি করেন বা আপনার কী আছে, এটি সমস্যাযুক্ত হতে পারে।

সম্পাদনা : আমি এই সম্পর্কে কানেক্ট এর উপরে একটি প্রস্তাবনার মামলা করবেন (দেখুন কানেক্ট # 2687832 ) এবং তা পোস্ট করেছেন Trello (অধীনে "অবজেক্ট এক্সপ্লোরার" দায়ের)।


এবং যদি একক ব্যবহারকারীকে সেট করাও ব্যর্থ হয় কারণ এটি ডেটাবেজে লক পেতে পারে না?
স্ট্যাকওভারথ্রো

@ user560822 আপনি ডাটাবেসে লক না পাওয়া পর্যন্ত অপেক্ষা করতে হবে। এর অর্থ যদি আপনাকে সেশন হত্যা শুরু করতে হয় ...
অ্যারন বারট্র্যান্ড

9

আপনি যখন ইতিমধ্যে ঝুলন্ত পরিস্থিতিতে রয়েছেন, তখন ভুলে যাবেন না যে দিয়ে আপনি সার্ভারের ওপেন সংযোগগুলি অনুসন্ধান করতে পারেন

sp_who2  

অন্য ডাটাবেসে যেমন মাস্টার।
আপনি অফলাইনে নেওয়ার চেষ্টা করছেন ডাটাবেসই যেখানে রয়েছে তার জন্য ফলাফল স্ক্যান করুন।
এই সারিগুলির স্পিড (প্রসেস আইডি) কলাম মানটি নোট করুন।

একবারে একটি, চালান

kill  ##

যেখানে "##" স্পাইড।

অবশ্যই এই প্রক্রিয়াগুলি চলমান ছেড়ে যাওয়া গুরুত্বপূর্ণ নয় তা নিশ্চিত করার জন্য যত্ন নিন ... সর্বশেষতম কমান্ডটি শেষ না করে এবং সতর্কতা ছাড়াই এগুলি সমাপ্ত করা হবে।


1
গৃহীত উত্তরটি আমার পক্ষে কৌশলটি করেনি। প্রথম কমান্ডে ব্যর্থ। এই উত্তর নিখুঁতভাবে কাজ করে। আপনাকে ধন্যবাদ
চেবুরেক

এটি খুব ভাল :) হ্যাঁ, গ্রহণযোগ্য উত্তরটি সমস্যাটি এড়াতে আসলেই ... আপনি যদি ইতিমধ্যে ঝুলিয়ে থাকেন তবে এটি হত্যা করার জন্য আপনার এর মতো কিছু দরকার
মাইক এম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.