আমি মুছে ফেলা কিছু রেকর্ড কীভাবে ফিরে পাব?


49

আমি ভুল করে একটি দূরবর্তী এসকিউএল সার্ভার ২০০৮ সারণী থেকে প্রায় ২,০০,০০০ রেকর্ড মুছে ফেলেছি। সার্ভারটি আমাকে সার্ভারের পাশের ব্যাকআপ ফাইলগুলিতে অ্যাক্সেস দিচ্ছে না।

এই রেকর্ডগুলি ফিরে পাওয়ার কোনও উপায় আছে কি?


18
আপনি শেষবার কখন আপনার ব্যাকআপগুলি পরীক্ষা করেছেন?
জো

20
শেষবার কখন আপনার ব্যাকআপগুলির একটি পুনরুদ্ধার পরীক্ষা করলেন?
ডেটাগোড

উত্তর:


116

আপনার ডাটাবেস পূর্ণ পুনরুদ্ধার মোডে আছে?

  • যদি হ্যাঁ, আপনি লেনদেন লগ ব্যাকআপ করছেন?

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


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

আপনি যদি সাধারণ মোডে থাকেন তবে সারিগুলি কিছু পৃষ্ঠায় শারীরিকভাবে উপস্থিত থাকতে পারে। সম্ভবত তাদের কিছু পুনরুদ্ধার করা যেতে পারে (খুব উচ্চ সময় এবং / অথবা অর্থ ব্যয়ে)।
usr ডিরেক্টরির

অবগতির জন্য। অ্যাপেক্সএসকিউএল সময় সীমাবদ্ধতার পাশাপাশি পুনরুদ্ধার, মূল্যায়ন সংস্করণটি পুনরুদ্ধারের জন্য উপলব্ধ মোট সারিগুলির প্রতি 10 টি সারিগুলির মধ্যে 1 টি পুনরুদ্ধার করে ( apexsql.com/faqs/faqs_recover.aspx )
সমীর

30

এসকিউএল সার্ভার প্রতিটি মুছে ফেলা রেকর্ডের জন্য লগ রাখে। আপনি fn_dblogএসকিউএল সার্ভার ফাংশনের মাধ্যমে এই লগগুলি জিজ্ঞাসা করতে পারেন ।

SELECT [RowLog Contents 0] 
FROM   sys.fn_dblog(NULL, NULL) 
WHERE  
       AllocUnitName = 'dbo.TableName'        
   AND Context IN ( 'LCX_MARK_AS_GHOST', 'LCX_HEAP' )        
   AND Operation in ( 'LOP_DELETE_ROWS' )   
;

তবে এই লগটি হেক্স ফর্ম্যাটে রয়েছে এবং আপনাকে এই হেক্স ফর্ম্যাটটি আপনার প্রকৃত ডেটাতে রূপান্তর করতে হবে।

নীচের নিবন্ধটি আপনাকে উপরে বর্ণিত পদ্ধতিতে মোছা রেকর্ডগুলি পুনরুদ্ধার করতে সহায়তা করবে:

http://raresql.com/2011/10/22/how-to-recover-deleted-data-from-sql-sever/


3
এটি বেশ দুর্দান্ত। কোন পরিস্থিতিতে এই পদ্ধতির কাজ হয় (বা কাজ করে না)?
নিক চ্যামাস

3
@ নিকচ্যামাস - এটি সক্রিয় লগে যা রয়েছে তা কেবল পুনরুদ্ধার করতে পারে তাই সাধারণ পুনরুদ্ধারের মডেলটির জন্য কোনও চেকপয়েন্ট অবশ্যই ঘটেনি। এছাড়াও বর্তমানে এটি দেখে মনে হচ্ছে এটি স্ন্যাপশট বিচ্ছিন্নতার সাথে ডাটাবেসে সঠিকভাবে কাজ করে না তবে এটি একটি সহজ সমাধান হওয়া উচিত। @user1059637- লোকেরা আপনার কোডটিতে কার্যকারিতা যুক্ত করার সাথে আপনার মনোভাব কী?
মার্টিন স্মিথ

@ মার্টিনস্মিথ, এখন এটি স্ন্যাপশট বিচ্ছিন্নতার সাথেও নিখুঁতভাবে কাজ করছে।
ব্যবহারকারী 1059637

22

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

আপনি যদি কেবলমাত্র আপনার মনে করেন যে আপনি কী করেছেন এবং আপনি কেন রেকর্ডগুলি ফিরে পেতে পারেন না এবং আপনার ডাটাবেসের সংস্থার বর্ণনা দিতে পারেন তবে কেন আপনি আরও বিশদে বিশদ বর্ণনা করতে পারেন তবে আমরা আপনাকে আরও কিছুটা সহায়তা করতে পারি।

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


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