"ভাগ করা হোস্টে 'LOG_BACKUP' এর কারণে ডাটাবেসের লেনদেন লগ পূর্ণ full


91

আমার একটি শেয়ার্ড হোস্টিং পরিকল্পনায় এন্টি ফ্রেমওয়ার্ক কোডফার্স্ট অ্যাপ্রোচ সহ একটি এসপি নেট নেট এমভিসি 5 ওয়েবসাইট রয়েছে। এটা তোলে ওপেন সোর্স ব্যবহার WebbsitePanel কন্ট্রোল প্যানেলের জন্য এবং তার SQL সার্ভার প্যানেল কিছুটা সীমাবদ্ধ। আজ যখন আমি ডাটাবেস সম্পাদনা করতে চাইছিলাম তখন আমি এই ত্রুটির মুখোমুখি হয়েছি:

The transaction log for database 'db_name' is full due to 'LOG_BACKUP'

আমি কাছাকাছি অনুসন্ধান এবং মত সংশ্লিষ্ট উত্তর অনেক পাওয়া এই এবং এই বা এই কিন্তু সমস্যা তারা ডাটাবেসের উপর একটি ক্যোয়ারী চলমান পরামর্শ হয়। আমি দৌড়ানোর চেষ্টা করেছি

db.Database.ExecuteSqlCommand("ALTER DATABASE db_name SET RECOVERY SIMPLE;");

ভিজ্যুয়াল স্টুডিওতে (তে HomeController) তবে আমি নিম্নলিখিত ত্রুটিটি পেয়েছি:

System.Data.SqlClient.SqlException: ALTER DATABASE statement not allowed within multi-statement transaction.

আমি কীভাবে আমার সমস্যা সমাধান করতে পারি? আমার কি সমর্থন দলের সাথে যোগাযোগ করা উচিত (যা আমার হোস্টের পক্ষে কিছুটা দরিদ্র) অথবা আমি নিজেই এটি সমাধান করতে পারি?


কোনও লেনদেন ছাড়াই ALTER এক্সিকিউট করুন।
usr

@ ইউএস আমি কীভাবে এটি করব?
আলিরেজা নুরি

এটি একটি ডাটাবেস সমস্যা, সংকোচন করা ডাটাবেস কাজ করতে পারে। এই বিষয়ে আপনাকে সহায়তা করার জন্য একটি ডিবিএকে জিজ্ঞাসা করুন।
শশাঙ্ক চতুর্বেদী

আপনি অবশ্যই কোনওভাবে কোনও লেনদেন খুলেছেন। আমি জানি না, সম্ভবত ইএফ স্বয়ংক্রিয়ভাবে এটি করে। আপনার EF এবং লেনদেন সম্পর্কে কিছু গবেষণা করা দরকার। অথবা, এসএসএমএস থেকে এটি সম্পাদন করুন। অথবা, কাঁচা ADO.NET ব্যবহার করুন। সম্ভবত আপনার হোস্টার সেই বিবৃতিটিকে আর অনুমতি দেবে না এবং তাদের আরও ঘন ঘন লগ ব্যাকআপ ইস্যু করা দরকার।
usr

উত্তর:


38

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


ধন্যবাদ. আমি নিজেই এটি করতে চেয়েছিলাম কিন্তু তাদের সাথেও যোগাযোগ করেছি এবং তারা পুনরুদ্ধার স্থাপন shrinkকরেছে এবং ডিবিতে একটি চালনা করেছে। এছাড়াও, আমার পুনরুদ্ধারের দরকার নেই তাই আমি এটিকে SIMPLEমোডে সেট করতে বলেছিলাম ।
আলিরিজা নূরী

4
এই এমএসডিএন পৃষ্ঠাটি পুনরুদ্ধারের মডেলটিকে কীভাবে সহজ সেট করবেন তা ব্যাখ্যা করে!
শেখর

147

বেনের উত্তর ছাড়াও, আপনি আপনার প্রয়োজন অনুসারে নীচে প্রশ্নের চেষ্টা করতে পারেন

USE {database-name};  
GO  
-- Truncate the log by changing the database recovery model to SIMPLE.  
ALTER DATABASE {database-name}
SET RECOVERY SIMPLE;  
GO  
-- Shrink the truncated log file to 1 MB.  
DBCC SHRINKFILE ({database-file-name}, 1);  
GO  
-- Reset the database recovery model.  
ALTER DATABASE {database-name}
SET RECOVERY FULL;  
GO 

ক্রেডিট আপডেট করুন @ cema-sp

ডাটাবেস ফাইলের নামগুলি অনুসন্ধানের জন্য নীচে ব্যবহার করুন

select * from sys.database_files;

8
অতিরিক্ত: {ডাটাবেস-ফাইল-নাম select * from sys.database_files;
find সন্ধান করতে

4
আমি নিশ্চিত করতে পারি যে এটি একটি ট্রিট কাজ করে। গ্রহণযোগ্য উত্তর হওয়া উচিত।
গ্যারেটেন্ডি

4
ধন্যবাদ @ মোহিত ধর্মধিকারী; আমি আরও অনেকগুলি ডিস্কের জায়গা বরাদ্দ করা এবং লগ ফাইলের আকার বাড়ানো সহ আরও অনেকগুলি চেষ্টা করেছিলাম, তবুও বিদ্যমান লগ ফাইলটিকে সঙ্কুচিত না করা পর্যন্ত কিছুই কার্যকর হয়নি।
জনি

4
ধন্যবাদ, খুব সহায়ক।
ওবাকেনগ মোলেবাতসি

4
আমি বিশ্বাস করি namequery ডাটাবেস-ফাইল-নাম এই ক্যোয়ারী থেকে লগের সারিটির জন্য কলামটির সাথে সমান হবে :select * from sys.database_files
বব হর্ন

14

কখনও কখনও যখন কোনও ডিস্কের স্থান শেষ না হয়ে যায়, "LOG_BACKUP" কারণে ডেটাবেস XXXXXXXXXX এর জন্য লেনদেন লগ পূর্ণ "বার্তাটি কোনও আপডেট এসকিউএল বিবৃতি ব্যর্থ হলে ফিরে আসবে। আপনার ডিস্কস্পেসটি পরীক্ষা করুন :)


5

এই ত্রুটিটি ঘটে কারণ LOG_BACKUP এর কারণে লেনদেন লগ পূর্ণ হয়ে যায়। অতএব, আপনি এই ডাটাবেসে কোনও ক্রিয়া সম্পাদন করতে পারবেন না এবং এই ক্ষেত্রে, এসকিউএল সার্ভার ডেটাবেস ইঞ্জিন একটি 9002 ত্রুটি বাড়িয়ে তুলবে।

এই সমস্যাটি সমাধান করার জন্য আপনাকে নিম্নলিখিতগুলি করা উচিত

  • একটি সম্পূর্ণ ডাটাবেস ব্যাকআপ নিন।
  • দৈহিক ফাইলের আকার হ্রাস করতে লগ ফাইল সঙ্কুচিত করুন।
  • একটি LOG_BACKUP তৈরি করুন।
  • প্রায়শই ব্যাকআপ লগগুলি নিতে একটি LOG_BACKUP রক্ষণাবেক্ষণ পরিকল্পনা তৈরি করুন।

আমি এই ত্রুটি সম্পর্কিত সমস্ত বিবরণ সহ একটি নিবন্ধ লিখেছিলাম এবং এটি কীভাবে সমাধান করতে হয় ডাটাবেস 'শেয়ারপয়েন্ট_কনফিগ' এর লেনদেন লগটিতে লগ_ব্যাকআপের কারণে পূর্ণ


9
আপনার উত্তর হিসাবে ত্রুটি বার্তা পোস্ট করা মোটেও সহায়ক নয়। কেবলমাত্র লিঙ্ক-উত্তরগুলি স্ট্যাকওভারফ্লোতেও নকল করা হয়। আপনার লিঙ্কটি থেকে প্রাসঙ্গিক পাঠ্যটি বের করা উচিত এবং এটিকে এখানে উদ্ধৃত করা উচিত। ভবিষ্যতে লিঙ্কটি মারা যাওয়ার ক্ষেত্রে এটি বিশেষত গুরুত্বপূর্ণ, যেমন সমস্ত লিঙ্ক অনিবার্যভাবে ঘটে।
ড্যান বেচার্ড

3

লগ ফাইল আকারে সীমাবদ্ধ থাকলে এটিও ঘটতে পারে।

অবজেক্ট এক্সপ্লোরার-এ ডান ক্লিক ডাটাবেস

বৈশিষ্ট্য নির্বাচন করুন

ফাইল নির্বাচন করুন

লগ লাইনে, অটোগ্রোথ / ম্যাক্সেসাইজ কলামে উপবৃত্তটি ক্লিক করুন

সর্বাধিক ফাইল আকার পরিবর্তন / যাচাই করুন সীমাহীন।

এখানে চিত্র বর্ণনা লিখুন

সীমাহীন হয়ে উঠার পরে, ডাটাবেসটি আবার জীবনে ফিরে আসে।


1

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

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