কেউ আমাদের এসকিউএল সার্ভার ডেটাবেসে দূরবর্তী অবস্থান থেকে একটি কোয়েরি চালাচ্ছিল এবং তাদের সিস্টেম ক্র্যাশ হয়েছে।
তাদের কাছে সেই ক্যোয়ারির কোনও ব্যাকআপ নেই এবং সার্ভারে কী চলছে তা দেখতে চান।
এই কোয়েরিটি কোনও লগ বা কোনও ইতিহাসে খুঁজে পাওয়া সম্ভব?
কেউ আমাদের এসকিউএল সার্ভার ডেটাবেসে দূরবর্তী অবস্থান থেকে একটি কোয়েরি চালাচ্ছিল এবং তাদের সিস্টেম ক্র্যাশ হয়েছে।
তাদের কাছে সেই ক্যোয়ারির কোনও ব্যাকআপ নেই এবং সার্ভারে কী চলছে তা দেখতে চান।
এই কোয়েরিটি কোনও লগ বা কোনও ইতিহাসে খুঁজে পাওয়া সম্ভব?
উত্তর:
অনুরূপ গ্রান্ট ফ্রিটের সমস্যা ছিল যেখানে তিনি এসএসএমএস বন্ধ করে দিয়েছিলেন এবং যে ক্যোয়ারিতে তিনি কাজ করছেন তা হারিয়ে ফেলেছেন ... ব্লগড সম্পর্কে এখানে: ওহ **********!
সম্পাদনা
উত্তরের আরও কিছুটা বিশদ তৈরি করতে, গ্রান্টের উপরের লিঙ্কযুক্ত রেফারেন্সযুক্ত একটি সন্ধানটি কেবলমাত্র আপনি যে সম্পাদনটি সম্পাদন করেছেন (বা এর সর্বনিম্ন প্রচেষ্টা) চালিয়েছিলেন তা বের করার জন্য উদাহরণে ক্যাশে যেতে একটি প্রশ্ন সরবরাহ করে:
SELECT dest.text
FROM sys.dm_exec_query_stats AS deqs
CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest
WHERE deqs.last_execution_time > '5/19/2011 11:00'
AND dest.text LIKE 'WITH%';
গ্রান্টের ব্লগের মন্তব্যে আরও কয়েকটি বিকল্প উল্লেখ করা হয়েছে:
2005+, উদ্ধারে ডিফল্ট ট্রেস ।
ডিফল্ট ট্রেস 20 মিমি রোল করে তবে এসকিউএল 5 টি ট্রেসের ইতিহাস ধরে রাখে। সার্ভারে অ্যাক্সেসের সাথে আপনি এমএসএসকিউএল \ লগ ডিরেক্টরি থেকে * .trc ফাইলগুলি পুনরুদ্ধার করতে পারেন। আপনি যদি সার্ভারটি অ্যাক্সেস করতে না পারেন তবে নিম্নলিখিতটি আপনাকে বর্তমান ডিফল্ট ট্রেস ফাইলটির নাম দেবে:
SELECT * FROM ::fn_trace_getinfo(default)
যদি বর্তমান ফাইলটি উদাহরণস্বরূপ E: \ MSSQL.1 \ MSSQL \ LOG \ log_200.trc হয় তবে পূর্ববর্তী ফাইলগুলি লগ_199.trc, লগ_198.trc ইত্যাদি হওয়া উচিত: এর সাথে ট্রেসের সামগ্রীগুলি পান:
SELECT * FROM fn_trace_gettable('E:\MSSQL.1\MSSQL\LOG\log_199.trc', default)
আপনি পারে , ক্যাশে ক্যোয়ারী প্ল্যান থেকে তথ্য পুনরুদ্ধার sys.dm_exec_query_stats উপর তথ্য জন্য Bol চেক বা একই ডাটাবেসের সাথে সংযুক্ত ব্যবস্থাপনা স্টুডিও থেকে এই চালাতে সক্ষম হবেন:
SELECT d.plan_handle ,
d.sql_handle ,
e.text
FROM sys.dm_exec_query_stats d
CROSS APPLY sys.dm_exec_sql_text(d.plan_handle) AS e
এর সাথে আউটপুট ফিল্টার করুন
WHERE text like '%something%'
ফলাফল সংকীর্ণ।
ডাটাবেসটি যদি পুরো পুনরুদ্ধার মোডে থাকে তবে কিছু ডেটা পুনরুদ্ধার করার এবং লেনদেনের লগটি পড়ে কী করা হয়েছিল সে সম্পর্কে অন্তর্দৃষ্টি পাওয়ার সুযোগ থাকতে পারে।
দুর্ভাগ্যক্রমে এটি ডিফল্ট দ্বারা সমর্থিত নয় তবে এটি করার উপায় রয়েছে।
আপনি অ্যাপেক্সএসকিউএল লগ বা এসকিউএল লগ রেসকিউ (ফ্রি তবে এসকিউএল 2000 কেবল) এর মতো তৃতীয় পক্ষের সরঞ্জামগুলি ব্যবহার করে দেখতে পারেন ।
আর একটি বিকল্প হ'ল অনাবন্ধিত ফাংশনগুলি ডিবিসিসি এলওজি বা fn_dblog ব্যবহার করার চেষ্টা করা। এটি আরও জটিল তবে এটি নিখরচায়।
আপনার ডাটাবেসটি যদি পুরো পুনরুদ্ধারের মডেলটিতে সেট করা থাকে আপনি আপনার লেনদেন লগ ব্যাকআপগুলি তদন্ত করতে পারেন। দেখুন fn_dump_dblogআরও তথ্য জন্য।
অ্যাপেক্সএসকিউএলে একটি 'এক্সিকিউটেড ক্যোয়ারী' কার্যকারিতা রয়েছে যা আপনাকে তারিখ অনুসারে অনুসন্ধান এবং ফিল্টার করতে দেয়।
আমি নিশ্চিত নই যে এটি এসএসএমএস ক্যাশে থেকে ইতিহাসটি টানছে বা আসলে এটি নিজেই ট্র্যাক করে রাখে। আপনি এটি ইনস্টল করার চেষ্টা করতে পারেন এবং সর্বোত্তম আশা করতে পারেন।