مقدمه:
همانطور که مستحضر می باشید هنگام ایجاد یک پایگاه داده در 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