পূর্ণ ব্যাকআপ থেকে এসকিউএল সার্ভার ডিবি পুনরুদ্ধার করা যায় না, লগ প্রক্রিয়াকরণ ব্যর্থ হয়, 'পুনরুদ্ধার' অবস্থায় ডেটাবেস


14

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

পুরো ব্যাকআপ থেকে পুনরুদ্ধার করার সময়, কিছু সময়ের পরে (সম্ভবত ~ 1 ঘন্টা, ডাটাবেসটি আকারের 270 গিগাবাইট), আমি একটি ত্রুটি পেয়েছি:

System.Data.SqlClient.SqlError: ডাটাবেস 'ডাটাবেসের নাম' লগ করার জন্য প্রক্রিয়া করার সময় একটি ত্রুটি ঘটেছে। যদি সম্ভব হয় তবে ব্যাকআপ থেকে পুনরুদ্ধার করুন। যদি কোনও ব্যাকআপ পাওয়া না যায় তবে লগটি পুনর্নির্মাণের প্রয়োজন হতে পারে। (Microsoft.SqlServer.SmoExtended)

এর পরে, ডিবি 'পুনরুদ্ধার ..' অবস্থায় রয়েছে।

আমি কিছু চালাতে চেয়েছিলাম ( এই প্রশ্ন থেকে এটি পেয়েছি )

ALTER DATABASE recovery_test_2 SET EMERGENCY;
ALTER DATABASE recovery_test_2 SET SINGLE_USER;

DBCC CHECKDB (recovery_test_2, REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS, ALL_ERRORMSGS;

এর বিপরীতে, তবে স্বাভাবিকভাবেই আমি ডাটাবেসটি 'পুনরুদ্ধার .. "অবস্থায় থাকতে পারি না it এটির পুনরুদ্ধার প্রক্রিয়া পুনরায় আরম্ভ করা একই ত্রুটি বার্তার দিকে নিয়ে যায়, ড্রপ এবং পুনরায় পুনরুদ্ধার খুব একটা কার্যকর হয়নি।

আমি কীভাবে ডিবি আপ করব এবং কাজ করব? লেনদেনের ধারাবাহিকতা আমার কাছে গুরুত্বপূর্ণ নয়।

এসএসএমএস স্বয়ংক্রিয়ভাবে উত্পাদিত পুনরুদ্ধার স্ক্রিপ্ট:

  USE [master]
  RESTORE DATABASE [database_name] FROM  DISK = N'D:\database_name.bak' WITH  FILE = 1,
  MOVE N'database_name' TO N'D:\MSSQL\MSSQL12.MSSQLSERVER\MSSQL\DATA\database_name.mdf',
  MOVE N'database_name_index' TO N'D:\MSSQL\MSSQL12.MSSQLSERVER\MSSQL\DATA\database_name_index.ndf',
  MOVE N'database_name_log' TO N'D:\MSSQL\MSSQL12.MSSQLSERVER\MSSQL\DATA\database_name_log.ldf',
  NOUNLOAD,
  STATS = 5

  GO

@ ক্রেইগ এফ্রেইন প্রস্তাবিত ক্যোয়ারির ফলাফল

লগটি পুনঃনির্মাণ করা যায় না কারণ যখন ডেটাবেস বন্ধ ছিল তখন উন্মুক্ত লেনদেন / ব্যবহারকারী ছিল, ডাটাবেসে কোনও চেকপয়েন্ট ছিল না, বা ডাটাবেসটি কেবল পঠনযোগ্য ছিল। যদি কোনও হার্ডওয়্যার বা পরিবেশের ব্যর্থতার কারণে লেনদেনের লগ ফাইলটি ম্যানুয়ালি মুছে ফেলা হয় বা হারিয়ে যায় তবে এই ত্রুটি ঘটতে পারে।


মন্তব্যগুলি বর্ধিত আলোচনার জন্য নয়; এই কথোপকথন চ্যাটে সরানো হয়েছে ।
পল হোয়াইট 9

উত্তর:


2

চ্যাট থেকে সরানো মন্তব্যগুলি থেকে, ওপির এই নোট:

আমি কেবল এটি জিইউআইয়ের মাধ্যমে সংযুক্ত করার চেষ্টা করেছি। আমি .mdf ফাইলটি নির্বাচন করার সাথে সাথে এসএসএমএস 3 টি ফাইল (ডেটা, সূচক, লগ) সমন্বিত ডেটাবেস সনাক্ত করল, তবে কোনওভাবে আমি মোভের সাথে পুনঃস্থাপন করছিলাম যদিও, ফাইলের পথ সম্পর্কে ডাটাবেসের বিবরণটি ভুল বলছিল! সুতরাং আমি তাদের কেবল পুরানো লগ / ডেটা / সূচী ফাইল এবং ... ডাটাবেসটি অনলাইনে চিহ্নিত করেছি।


-3

একক ব্যবহারকারী মোডে পরিবর্তন করুন এবং পুনরুদ্ধার করুন।

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

RESTORE DATABASE AdventureWorks FROM DISK = 'C:\AdventureWorks.BAK'
WITH NORECOVERY
GO
RESTORE LOG AdventureWorks FROM DISK = 'C:\AdventureWorks.TRN'
WITH RECOVERY
GO

1
প্রশ্নটি একটি একক পুনরায় বিতরণ বিবরণীর উল্লেখ করে, কোনও পৃথক লেনদেন লগ পুনরুদ্ধার করা হচ্ছে না। এটি সম্ভবত উত্স ডেটাবেস এবং / বা ব্যাকআপ ফাইলটি দূষিত।
ব্রায়ান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.