دلیل خطای The transaction log for database X is full due to LOG_BACKUP
دوستان یک سایت دارم که به خوبی کار می کرد. اما از دیروز هیچ گونه عملیاتی توی دیتابیس انجام نمیده و با خطای زیر مواجه می شم :
The transaction log for database 'CarDb_kan' is full due to 'LOG_BACKUP'.
لطفا راهنمایی بفرمایید مشکل چی هست و باید چیکار کرد که حل بشه ؟
پاسخ هوش مصنوعی
خطای "The transaction log for database 'CarDb_kan' is full due to 'LOG_BACKUP'" نشان دهنده این است که فایل لاگ تراکنش دیتابیس شما پر شده است و سیستم نمی تواند اطلاعات جدیدی را در آن ذخیره کند. این وضعیت معمولاً در دیتابیس هایی با مدل بازیابی FULL یا BULK_LOGGED اتفاق می افتد و تقاضا می کند تا لاگ ها به طور منظم پشتیبان گیری شوند.
برای رفع این مشکل، می توانید مراحل زیر را دنبال کنید:
-- 1. یک پشتیبان از لاگ تراکنش بگیرید
BACKUP LOG CarDb_kan TO DISK = 'C:\Backup\CarDb_kan_log_backup.trn';
-- 2. یا می توانید دیتابیس را به حالت SIMPLE تغییر دهید (اما این باعث می شود که قابلیت بازگشت به حالت قبل را از دست بدهید)
ALTER DATABASE CarDb_kan SET RECOVERY SIMPLE;
-- 3. سپس یک BACKUP FULL از دیتابیس بگیرید
BACKUP DATABASE CarDb_kan TO DISK = 'C:\Backup\CarDb_kan_full_backup.bak';
به یاد داشته باشید که در حالت بازیابی FULL، به طور منظم باید از لاگ تراکنش پشتیبان گیری کنید تا از پر شدن فضای لاگ جلوگیری شود.
پاسخ هوش مصنوعی
خطای "The transaction log for database 'CarDb_kan' is full due to 'LOG_BACKUP'" به این معنی است که فایل لاگ تراکنش (transaction log) برای دیتابیس شما پر شده و نیاز به مدیریت دارد. این اتفاق معمولاً زمانی می افتد که شما از مدل بازیابی (recovery model) FULL استفاده کنید و فرآیند پشتیبان گیری (backup) از لاگ تراکنش انجام ندهید.
برای رفع این مشکل می توانید یکی از روش های زیر را انجام دهید:
ایجاد پشتیبان از لاگ تراکنش:
BACKUP LOG CarDb_kan TO DISK = 'مسیر_پشتیبان_گیری\backup_file.trn'
با این کار فضای لازم برای لاگ تراکنش آزاد می شود.
تغییر مدل بازیابی به SIMPLE:
اگر نیازی به نگهداری تاریخچه لاگ تراکنش ندارید، می توانید مدل بازیابی دیتابیس را به SIMPLE تغییر دهید. این کار منجر به حذف خودکار لاگ های تراکنش قدیمی تر می شود.
ALTER DATABASE CarDb_kan SET RECOVERY SIMPLE;
پس از انجام این مراحل، اطمینان حاصل کنید که پشتیبان گیری از لاگ تراکنش به طور منظم انجام شود تا از بروز این مشکل در آینده جلوگیری شود.
دیتابیس شما اگر عملیات زیادی توش انجام بشه (عملیات منظور insert و update و delete و select) حجم log های اون کم کم زیاد میشه و تمام حجم پیش فرض درنظر گرفته شده رو پر میکنه. در این صورت دیگه شما هیچ عملیاتی نمی تونید انجام بدید. در این صورت باید یا حجم پیش فرض log ها رو افزایش بدید یا اینکه لاگ های اضافی رو پاک کنید. برای این کار یک بک آپ از دیتابیس خودتون بگیرید و دستور زیر رو اجرا کنید.
ALTER DATABASE [DataBase_Name]
SET RECOVERY SIMPLE
GO
DBCC SHRINKFILE (DataBase_log, 1)
GO
ALTER DATABASE [DataBase_Name]
SET RECOVERY FULL
برای توضیحات بیشتر لینک های زیر رو مطالعه کنید.
- آموزش استفاده از پلاگین گردونه شانس در Asp.net core به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- کار با CkEditor با قابلیت آپلود عکس
- خطا در ایجاد migration در Asp.net core
- تفاوت های Asp.net core و Asp.net mvc چیه؟
- دلیل اسپم شدن ایمیل های ارسالی از سرور
- نحوه لایه بندی پروژه Core و اضافه کردن به IIS
- ارسال ایمیل در Asp.net core
- آیا میشه در mvc core از کامپونت استفاده کرد
- آپلود فایل در Asp.net core چگونه است؟
- حذف کامل یک رکورد در جدول ریلیشن شده
- اشکال در آپلود فایل ویدیو در mvc core 2