از بین بردن فایل های لاگ جهت آزاد سازی حافظه اشغال شده
  بالا رفتن حجم فایل لاگ پایگاه داده جزو مشکلات متداول توسعه گران و مدیران پایگاه داده می باشد. در این ترفند به معرفی روشی جهت از بین بردن فایل های لاگ می پردازیم.
   SQL Server
   ۱۶۳۵۶
   این مقاله حاوی فایل ضمیمه نمی باشد
   مرتضی صحراگرد
   ۱۳۸۹/۱۰/۱۳
ارسال لینک صفحه برای دوستان ارسال لینک صفحه برای دوستان  اضافه کردن به علاقه مندیها اضافه کردن به علاقه مندیها   نسخه قابل چاپ نسخه قابل چاپ

 

مقدمه:

همانطور که مستحضر می باشید هنگام ایجاد یک پایگاه داده در Microsoft SQL Server علاوه بر فایل اصلی برنامه (با پسوند MDF) فایل دیگری (با پسوند LDF) ایجاد می شود که وظیفه آن نگهداری اطلاعات جانبی در مورد پایگاه داده می باشد و به آن فایل لاگ (Log File) گفته می شود. این اطلاعات شامل ثبت تراکنش های انجام شده بر روی پایگاه داده و ... می باشد.

اطلاعات موجود در فایل لاگ می تواند در مواقعی بسیار ارزشمند باشند ولی در بیشتر موارد استفاده ای برای توسعه گران نرم افزار و مدیران پایگاه داده ندارند. یکی از مشکلات معمول این فایل (یا فایل ها) رشد سریع حجم آن ها می باشد. دستوراتی مانند Delete باعث می شوند که اطلاعات این فایل به شدت رشد کنند. در مورد پایگاه های داده ای که استفاده زیادی از آن ها می شود حجم این فایل می تواند حتی ده ها گیگابایت شود! که نگهداری آن ها بسیار سخت و هزینه بر خواهد بود.

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

آغاز:

با اجرای دستور exec sp_helpfile بر روی پایگاه داده می توانیم به اطلاعات جالبی دست پیدا کنیم.

در قسمت زیر نتیجه اجرای دستور فوق را بر روی پایگاه داده ای به نام MyDatabase ملاحظه می کنید.


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

  • name: در این ستون نام منطقی (Logical Name) پایگاه داده و فایل لاگ نگهداری می شود. نام منطقی پایگاه داده همان نام فایل فیزیکی است (البته بدون پسوند MDF یا LDF) و معمولا این نام برابر نام پایگاه داده می باشد. اما اگر به هر دلیلی نام پایگاه داده تغییر کند، نام منطقی آن تغییر نخواهد کرد بنابراین این دو نام از هم متمایز خواهند بود. (البته برای تغییر نام منطقی هم دستوراتی وجود دارند).
  • filename: در این ستون آدرس محل نگهداری فایل های پایگاه داده نگهداری می شود.
  • size: در این ستون حجم فایل های پایگاه داده نمایش داده می شود.

با اجرای دستورات زیر بر روی پایگاه داده می توانیم حجم فایل لاگ و فایل دیتا را به حداقل مقدار ممکن کاهش دهیم.

BACKUP LOG <DatabaseName> WITH TRUNCATE_ONLY
GO
DBCC SHRINKFILE (<LogicalLogfileName>, 1)
GO
DBCC SHRINKFILE (<LogicalDatafileName, 1)

به طور مثال دستورات زیر را بر روی پایگاه داده MyDatabase اجرا می کنیم.

exec sp_helpfile

BACKUP LOG MyDatabase WITH TRUNCATE_ONLY
GO
DBCC SHRINKFILE (MyDatabase_log, 1)
GO
DBCC SHRINKFILE (MyDatabase , 1)

exec sp_helpfile

حاصل اجرای دستورات بالا را در قسمت زیر مشاهده می کنید.


همانطور که ملاحظه می کنید حجم فایل پایگاه داده از 460800 کیلوبایت تبدیل به 1280 کیلوبایت شده و حجم فایل لاگ از 5605504 کیلوبایت به  4224 کیلوبایت تبدیل شده است. البته میزان کاهش حجم فایل پایگاه داده قابل پیشبینی نیست و به عوامل مختلفی بستگی دارد ولی با استفاده از این روش اندازه فایل لاگ به کمترین اندازه ممکن می رسد.

تذکر:

توجه داشته باشید که پس از استفاده از این روش زنجیره فایل های لاگ پایگاه داده از هم گسیخته می شود و بسیاری از اطلاعات این فایل قابل دسترس نمی باشند. بنابراین اگر اطلاعات فایل لاگ مورد نیاز شما می باشد، حتما قبل از اجرای دستورات یک فایل پشتیبان از پایگاه داده تهیه نمایید.

برگرفته از: SqlCleanup