এসকিউএল সার্ভার ডাটাবেস অফলাইনে নেওয়ার সময় চূড়ান্ত অপেক্ষা-সময়


278

আমি আমার ডেভ ডাটাবেসে কিছু অফলাইন রক্ষণাবেক্ষণ (লাইভ ব্যাকআপ থেকে ডেটা ডাটাবেস পুনরুদ্ধার) করার চেষ্টা করছি, তবে এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিওর মাধ্যমে 'টেক অফলাইন' কমান্ডটি সম্পাদন করছে খুব ধীরে ধীরে - এখন 30 মিনিটের প্লাসের অর্ডারে। আমি আমার ক্ষমতার শেষে এসেছি এবং গতি সমস্যার কারণ কী হতে পারে বা কীভাবে এটি ঠিক করতে হবে সে সম্পর্কে অনলাইনে কোনও রেফারেন্স আমি খুঁজে পাচ্ছি না।

কিছু সাইট পরামর্শ দিয়েছে যে ডাটাবেসের সাথে খোলা সংযোগগুলি এই ধীরগতির কারণ, তবে কেবলমাত্র এই অ্যাপ্লিকেশনটি যা এই ডাটাবেসটি ব্যবহার করে তা হ'ল আমার ডেভ মেশিনের আইআইএস দৃষ্টান্ত, এবং পরিষেবাটি বন্ধ হয়ে গেছে - আরও খোলা সংযোগ নেই।

এই মন্দার কারণ কী হতে পারে এবং এটির গতি বাড়ানোর জন্য আমি কী করতে পারি?

উত্তর:


408

কিছু অতিরিক্ত অনুসন্ধানের পরে (নতুন অনুসন্ধান শর্তাবলী gbn এর উত্তর দ্বারা অনুপ্রাণিত হয়েছে এবং কে মাইক এর উত্তর সম্পর্কে u07ch এর মন্তব্য) আমি এটি পেয়েছি, যা 2 সেকেন্ডের মধ্যে সফলভাবে শেষ হয়েছে:

ALTER DATABASE <dbname> SET OFFLINE WITH ROLLBACK IMMEDIATE

(হালনাগাদ)

এটি এখনও নিম্নলিখিত ত্রুটির সাথে ব্যর্থ হলে, আপনি এই ব্লগ পোস্ট দ্বারা অনুপ্রাণিত হিসাবে এটি ঠিক করতে পারেন :

অল্টার ডেটাবেস ব্যর্থ হয়েছে কারণ ডাটাবেস 'ডিবিনেম' তে একটি লক স্থাপন করা যায়নি পরে আবার চেষ্টা করুন।

আপনার ডাটাবেসে কে লক রাখছে তা জানতে আপনি নীচের কমান্ডটি চালাতে পারেন:

EXEC sp_who2

এবং SPIDআপনি নিম্নলিখিত কমান্ডটিতে যা কিছু পান তা ব্যবহার করুন :

KILL <SPID>

তারপরে ALTER DATABASEআবার কমান্ডটি চালান । এটি এখন কাজ করা উচিত।


35
যদি এটি কাজ না করে (একটি লক স্থাপন করা যায়নি), তবে স্ট্যাকওভারফ্লো / প্রশ্নগুলি / 46673065 এ সমাধানটি চেষ্টা করে দেখুন ।
স্পষ্টত

3
টেক ডিবি অফলাইন প্রক্রিয়াটি এখনও চলমান থাকলে, দেব মেশিনগুলির জন্য আপনি এটি টাস্ক ম্যানেজার থেকে হত্যা করতে এবং উপরের কমান্ডটি চালাতে পারেন।
নুল হেড

1
তোমাকে হত্যা কমান্ডটি প্রয়োগ এবং বার্তা পেলে "হত্যা ব্যবহার করতে পারি না আপনার নিজের প্রক্রিয়ার হত্যা করতে।", নিশ্চিত করুন যে আপনি মাস্টার ডাটাবেসের ব্যবহার করছেন কমান্ড চালানোর জন্য
টেকনোলজি

129

কোথাও থেকে খুব সম্ভবত ডিবি-র সংযোগ রয়েছে (একটি বিরল উদাহরণ: অ্যাসিনক্রোনাস স্ট্যাটিস্টিক আপডেট )

সংযোগগুলি খুঁজতে, sys.sysprocesses ব্যবহার করুন

USE master
SELECT * FROM sys.sysprocesses WHERE dbid = DB_ID('MyDB')

সংযোগ বিচ্ছিন্ন করার জন্য, রোলব্যাকটি অবিলম্বে ব্যবহার করুন

USE master
ALTER DATABASE MyDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE

7
+1 কারণ প্রক্রিয়া ক্যোয়ারী আপনাকে এই ডাটাবেসের সাথে কী সংযুক্ত রয়েছে তা জানতে দেয়। আমার ক্ষেত্রে এটি
এসএসএমএস

3
আমার ক্ষেত্রে আমি একটি ক্যোয়ারী বিশ্লেষক উইন্ডো খোলা দিয়ে দুর্বৃত্ত ছিলাম
dellyjm

1
আমার ক্ষেত্রে বিকাশকারীরা খুব পরিচিত ব্যাংকের জন্য একটি প্রডাকশন মূল ওয়েবসাইট পেয়েছিলেন ওল্ড
ZZ9

3
যদি এটি বলে যে ALTER DATABASE failed because a lock could not be placed on databaseকমান্ড KILL <SPID>সাহায্য করবে
Muflix

28

আপনার কাছে কি কোনও খোলা এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিও উইন্ডো রয়েছে যা এই ডিবিতে সংযুক্ত রয়েছে?

এটিকে একক ব্যবহারকারী মোডে রাখুন এবং তারপরে আবার চেষ্টা করুন।


2
রতব্যাকের তাত্ক্ষণিকতার সাথে ডেটাব্যাস <ডিবিএন> সেট সিঙ্গেল_ইউসার
u07ch

কে মাইক - আমার একমাত্র সংযোগটি মাস্টার ডাটাবেসের জন্য উন্মুক্ত, অফলাইনে নেওয়ার চেষ্টা করছি এমন ডাটাবেস নয় not
এরিক ফোর্বস

17

আমার ক্ষেত্রে, এটি শেষ হওয়ার জন্য এতক্ষণ অপেক্ষা করার পরেও আমার কোনও ধৈর্য ছিল না এবং কেবল বন্ধ করা স্টুডিও বন্ধ ছিল। প্রস্থান করার আগে এটি সাফল্যের বার্তাটি দেখিয়েছিল, ডিবি অফলাইন। ফাইলগুলি নাম পরিবর্তন করার জন্য উপলব্ধ ছিল।


7

সঞ্চিত পদ্ধতিটি চালান sp_Wo2

এটি আপনাকে কোনও ব্লকিং লক রয়েছে কিনা তা দেখার অনুমতি দেয় .. এটি ঠিক করা উচিত তাদের হত্যা করুন।


5

এসএসএমএসে: এসকিউএল সার্ভার আইকন, ক্রিয়াকলাপ মনিটরে ডান ক্লিক করুন। প্রক্রিয়াগুলি খুলুন। প্রক্রিয়াযুক্ত সংযুক্তটি সন্ধান করুন। প্রক্রিয়া ডান ক্লিক করুন, হত্যা।


4

যে কোনও সময় আপনি এই ধরণের জিনিসটিতে যাবেন আপনার সর্বদা আপনার লেনদেনের লগ সম্পর্কে ভাবা উচিত। রোলব্যাক সহ তাত্ক্ষণিকভাবে পরিবর্তিত ডিবি স্টেটমেন্ট এটি কেস হিসাবে চিহ্নিত করে। এটা দেখ: http://msdn.microsoft.com/en-us/library/ms189085.aspx

চেকপয়েন্টস ইত্যাদিতে সংযুক্ত হওয়া আপনার লগের লেনদেনগুলি সংরক্ষণের পক্ষে মূল্যবান কিনা তা আপনাকে সিদ্ধান্ত নিতে হবে এবং তারপরে আপনার ডিবি চালানোর জন্য মোডটি বাছাই করতে হবে। আপনার অপেক্ষা করতে হবে এমন কোনও কারণ নেই তবে আপনার ডেটা হারাতেও কোন কারণ নেই - আপনার উভয়ই থাকতে পারে।


2
Ageষি পরামর্শ - আপনাকে ধন্যবাদ - তবে এই ক্ষেত্রে ডেটা ব্যয়যোগ্য কারণ এটি একটি ডেটাবেস ডেটাবেস যা পুনরুদ্ধার করা হচ্ছে।
এরিক ফোর্বস

3

এসএসএমএস (এসকিউএল সার্ভিস ম্যানেজার) এর উদাহরণটি বন্ধ করা যা থেকে অনুরোধ করা হয়েছিল তা আমার জন্য সমস্যার সমাধান করেছে .....


3

আমার ক্ষেত্রে এই ক্রিয়াটি কার্যকর করার আগে আমি ডিবিতে কয়েকটি টেবিল দেখেছি। আমার ব্যবহারকারী অ্যাকাউন্টটি এসএসএমএসে এই ডিবিতে একটি সক্রিয় সংযোগ রেখেছিল। একবার আমি এসএসএমএসের সার্ভার থেকে সংযোগ বিচ্ছিন্ন করে ('ডেটাবেসটিকে অফলাইনে নিয়ে যাব' ডায়ালগ বাক্সটি খোলা রেখে) অপারেশনটি সফল হয়েছিল।


আমার সাথেও একই. তারপরে আমি পুনরায় সংযুক্ত হয়েছি, সক্রিয় ডাটাবেসটি মাস্টার হিসাবে পরিবর্তন করেছি এবং নিম্নলিখিত কমান্ডটি
চালাচ্ছি: রোলব্যাকের

2

এটি পেতে আমি আইআইএস-এর ডিবি'র সাথে সংযুক্ত ওয়েবসাইটটি বন্ধ করে দিয়েছিলাম এবং তত্ক্ষণাত্ 'হিমায়িত' 'ডিবি অফলাইন গ্রহণ করুন' প্যানেলটি হিমায়িত হয়ে গেছে।


2

আমি নীচের সমস্ত পরামর্শ চেষ্টা করেছিলাম এবং কিছুই কার্যকর হয়নি।

  1. এক্সইসি এসপি_ও
  2. <এসপিআইডি> হত্যা করুন

  3. রোলব্যাক তত্ক্ষণাত্ ডেটাবাসেট সিঙ্গেল_উসারের সেট করুন

    রোলব্যাকের সাথে তাত্ক্ষণিকভাবে ডেটাবেস সেট অফলাইন করুন

    ফলাফল: উপরের দুটি আদেশও আটকে ছিল।

ঘ। ডাটাবেসটিতে ডান ক্লিক করুন -> বৈশিষ্ট্য -> বিকল্পগুলি ডাটাবেস পাঠ্য-কেবলমাত্র ক্লিক করুন 'হ্যাঁ' ডায়ালগটিতে সতর্কবার্তা এসকিউএল সার্ভার ডাটাবেসের সাথে সমস্ত সংযোগ বন্ধ করে দেবে।

ফলাফল: উইন্ডোটি কার্যকর করতে আটকে গিয়েছিল।

একটি সর্বশেষ অবলম্বন হিসাবে, আমি কনফিগারেশন ম্যানেজারের থেকে এসকিউএল সার্ভার পরিষেবাটি পুনরায় চালু করেছি এবং তারপরে রোলব্যাকের সাথে অল্টার ডেটাবেস সেট অফলাইনে দৌড়েছি। এটি একটি মোহন মত কাজ করে


1

এছাড়াও, আপনার কাছে খোলা থাকা যে কোনও ক্যোয়ারী উইন্ডোগুলি প্রশ্নযুক্ত ডাটাবেসের সাথে সংযুক্ত রয়েছে তা বন্ধ করুন;)


1

এসএসএমএসে, কেবলমাত্র পিছনে পিছনে পঠনযোগ্য ডাটাবেস সেট করে। সংযোগগুলি বন্ধ হয়ে যাবে, যা লকগুলি মুক্ত করে।

আমার ক্ষেত্রে একটি ওয়েবসাইট ছিল যা ডাটাবেসের সাথে মুক্ত সংযোগ ছিল। এই পদ্ধতিটি যথেষ্ট সহজ ছিল:

  1. ডাটাবেস -> বৈশিষ্ট্য -> বিকল্পগুলিতে ডান ক্লিক করুন
  2. সেট Database Read-Onlyসত্যতে
  3. ডায়ালগটিতে সতর্কতা এসকিউএল সার্ভারে 'হ্যাঁ' ক্লিক করুন ডাটাবেসের সমস্ত সংযোগ বন্ধ করে দেবে।
  4. বিকল্পগুলি পুনরায় খুলুন এবং কেবল পঠনযোগ্য বন্ধ করুন
  5. এখন ডাটাবেসটির নাম পরিবর্তন বা এটি অফলাইনে নেওয়ার চেষ্টা করুন।

0

আমার জন্য, আমাকে সবেমাত্র জব অ্যাক্টিভিটি মনিটরে যেতে হয়েছিল এবং দুটি জিনিস যা প্রক্রিয়াজাতকরণ বন্ধ করেছিল stop তারপরে তা অবিলম্বে অফলাইনে চলে গেল went আমার ক্ষেত্রে যদিও আমি জানতাম যে 2 টি প্রক্রিয়া কী এবং সেগুলি বন্ধ করা ঠিক ছিল।


0

আমার ক্ষেত্রে, ডাটাবেসটি পুরানো শেয়ারপয়েন্ট ইনস্টল সম্পর্কিত ছিল। 40 মিনিট ধরে চলমান অফলাইন পদক্ষেপটি সার্ভার ম্যানেজারের সাথে সম্পর্কিত পরিষেবাগুলি থামানো এবং অক্ষম করা, এটি অবিলম্বে শেষ হয়েছে।

কোনও পরিষেবা বর্তমানে ডাটাবেস ব্যবহার করছে কিনা তা আপনি পরীক্ষা করতে চাইতে পারেন।


1
চালান sp_who2কি প্রসেস ডাটাবেস এবং ব্যবহার ব্যবহার করছেন দেখতে kill <PID>তাদের থামাতে।
এরিক কিগাথি

0

পরের বার, অফলাইন টেক কথোপকথন থেকে, 'ড্রপ অল অ্যাক্টিভ সংযোগসমূহ' চেকবক্সটি চেক করতে ভুলবেন না। আমি কোনও সংযোগ ছাড়াই লোকাল মেশিনে এসকিউএল_এক্সপ্রেস-এও ছিলাম, তবে আমি এই চেকবক্সটি না পরীক্ষা না করলে এই মন্দা আমার জন্য ঘটেছিল।


-1

আমার ক্ষেত্রে আমি টমক্যাট সার্ভারটি বন্ধ করে দিয়েছি। তারপরে তত্ক্ষণাত্ ডিবি অফলাইনে চলে গেল।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.