دسته بندی ها
13:45 1400/09/14

دلیل خطای The transaction log for database X is full due to LOG_BACKUP

مشخصات سوال کننده :
کاربر : hamid_b     امتیاز کاربر : 518     رتبه کاربر : 4
دسته بندی : Asp.net Core Asp.net Mvc Sql Server

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 4848
هوش مصنوعی

پاسخ هوش مصنوعی

خطای "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، به طور منظم باید از لاگ تراکنش پشتیبان گیری کنید تا از پر شدن فضای لاگ جلوگیری شود.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
هوش مصنوعی

پاسخ هوش مصنوعی

خطای "The transaction log for database 'CarDb_kan' is full due to 'LOG_BACKUP'" به این معنی است که فایل لاگ تراکنش (transaction log) برای دیتابیس شما پر شده و نیاز به مدیریت دارد. این اتفاق معمولاً زمانی می افتد که شما از مدل بازیابی (recovery model) FULL استفاده کنید و فرآیند پشتیبان گیری (backup) از لاگ تراکنش انجام ندهید.

برای رفع این مشکل می توانید یکی از روش های زیر را انجام دهید:

  1. ایجاد پشتیبان از لاگ تراکنش:

    BACKUP LOG CarDb_kan TO DISK = 'مسیر_پشتیبان_گیری\backup_file.trn'

    با این کار فضای لازم برای لاگ تراکنش آزاد می شود.

  2. تغییر مدل بازیابی به SIMPLE:

    اگر نیازی به نگهداری تاریخچه لاگ تراکنش ندارید، می توانید مدل بازیابی دیتابیس را به SIMPLE تغییر دهید. این کار منجر به حذف خودکار لاگ های تراکنش قدیمی تر می شود.

    ALTER DATABASE CarDb_kan SET RECOVERY SIMPLE;

پس از انجام این مراحل، اطمینان حاصل کنید که پشتیبان گیری از لاگ تراکنش به طور منظم انجام شود تا از بروز این مشکل در آینده جلوگیری شود.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : saedbfd 19:16 1400/09/15

دیتابیس شما اگر عملیات زیادی توش انجام بشه (عملیات منظور 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

برای توضیحات بیشتر لینک های زیر رو مطالعه کنید.

نحوه کاهش حجم log فایل در Sql Server 

کم کردن حجم فایلهای دیتابیس Sql Server

به این پاسخ امتیاز بدهید    1
امتیاز: 1664 رتبه: 1
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود