আমি আমার পিসির স্থানীয় এসকিউএল সার্ভার ডেভেলপার সংস্করণ 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
@ ক্রেইগ এফ্রেইন প্রস্তাবিত ক্যোয়ারির ফলাফল
লগটি পুনঃনির্মাণ করা যায় না কারণ যখন ডেটাবেস বন্ধ ছিল তখন উন্মুক্ত লেনদেন / ব্যবহারকারী ছিল, ডাটাবেসে কোনও চেকপয়েন্ট ছিল না, বা ডাটাবেসটি কেবল পঠনযোগ্য ছিল। যদি কোনও হার্ডওয়্যার বা পরিবেশের ব্যর্থতার কারণে লেনদেনের লগ ফাইলটি ম্যানুয়ালি মুছে ফেলা হয় বা হারিয়ে যায় তবে এই ত্রুটি ঘটতে পারে।