در مدیریت پایگاه داده، لاگ (Log) یک فایل مهم و حیاتی است، که اطلاعات همه تراکنشهای انجام شده در دیتابیس را در خود ثبت میکند. این اطلاعات شامل تراکنشها، تغییرات اعمال شده روی دادهها و تاریخچه تعامل با سیستم میشوند. در این مقاله با توجه به نیازها و شرایط مختلف، به حذف لاگ دیتابیس یا تراشیدن (shrink) آن در SQL Server، با استفاده از دستورات SQL Server management studio یا از طریق محیط گرافیکی Transact-SQL (T-SQL) میپردازیم. ( خرید هاست ویندوز )
لاگ دیتابیس چیست
همانطور که در ابتدای مقاله اشاره کردیم، لاگ دیتابیس یا لاگ تراکنش (Transaction Log)، فایلی است که همه تراکنشها و تغییرات اعمال شده روی دادهها در آن ثبت میشود. هدف از ثبت این اطلاعات، اطمینان از حفظ تراکنشها و بازیابی دادهها در صورت بروز خطا است. در کل لاگ دیتابیس نقش بسیار مهمی در حفظ و بازیابی دادهها و همینطور مدیریت تراکنشهای دیتابیس دارد.
حذف لاگ دیتابیس SQL Server
برای حذف لاگ دیتابیس SQL Server، میتوانید از چند روش استفاده کنید:
- T-SQL (Transact-SQL)
- SSMS(SQL Server Management Studio)
البته به این نکته توجه داشته باشید که پاک کردن لاگ دیتابیس باید با دقت انجام شود، زیرا برخی از اطلاعات لاگ شده ممکن است در آینده مورد نیاز باشند و با پاک کردن آن دچار مشکل میشوید.
حذف لاگ دیتابیس با T-SQL
برای حذف لاگ دیتابیس یا کم حجم کردن آن میتوان از دستورات T-SQL استفاده کرد. این دستورات به شما امکان کاهش حجم فایل لاگ را میدهد. برای پاک کردن لاگ با استفاده از T-SQL میتوانید از دستور "DBCC SHRINKFILE" استفاده کنید:
Shrink کردن فایل لاگ به حجم دلخواه:
USE YourDatabaseName;
ALTER DATABASE YourDatabaseName SET RECOVERY SIMPLE;
DBCC SHRINKFILE('YourLogFileName', DesiredSizeInMB);
ALTER DATABASE YourDatabaseName SET RECOVERY FULL;
به جای YourDatabaseName نام دیتابیس خود را جایگزین کنید و به جای نام فایل لاگ خود را جایگزین کنید. به جای DesiredSizeInMB باید حجم دلخواه را به مگابایت نوشته بنویسید.
Shrink کردن فایل لاگ تا حدی که فضای بلااستفاده آزاد شود:
استفاده از ALTER DATABASE برای تغییر Recovery Model به "SIMPLE" و سپس با بکآپ از لاگ تراکنش، روش دیگری است که میتوان لاگ را حذف کرد.
USE YourDatabaseName;
ALTER DATABASE YourDatabaseName SET RECOVERY SIMPLE;
DBCC SHRINKFILE('YourLogFileName', 1);
ALTER DATABASE YourDatabaseName SET RECOVERY FULL;
در این قسمت نیز به جای YourDatabaseName نام دیتابیس خود و به جای YourLogFileName نام فایل لاگ خود را جایگزین کنید.
YourLogFileName در هر دیتابیس به یک اسم است . در mssql این اسم در تب files برای هر دیتابیس قابل مشاهده می باشد.
عدد 1 باعث آزاد شدن فضای بلااستفاده میشود.
استفاده از این دستورات باعث کاهش فضای اشغال شده (shrink) توسط فایل لاگ میشود. همچنین، با تغییر Recovery Model به SIMPLE میتوانید از بکآپ لاگهای غیرضروری جلوگیری کنید.
مطالب بیشتر، اطلاعات بیشتر
حذف لاگ دیتابیس با SSMS
در SQL Server Management Studio میتوانید با استفاده از ویژگیهای گرافیکی لاگ دیتابیس را پاک کنید.
ابتدا وارد Sql server management شده و مراحل زیر را دنبال کنید:
Shrink کردن فایل لاگ به حجم دلخواه:
روی نام دیتابیس کلیک راست کرده ، Proterties را انتخاب و روی Options کلیک کنید.
روی نام دیتابیس کلیک راست کرده ، طبق مسیر زیر پیش روید:
Tasks > Shrink > Files
گزینه log را از بخش File type انتخاب کنید.
Shrink کردن فایل لاگ تا حدی که فضای بلااستفاده آزاد شود:
استفاده از ALTER DATABASE برای تغییر Recovery Model به "SIMPLE" و سپس با بکآپ از لاگ تراکنش، روش دیگری است که میتوان لاگ را حذف کرد.
یکی از سه حالت زیر را انتخاب کنید :
- Release unused space: فضای خالی فایل لاگ را حذف میکند.
- Recognize pages before releasing unused space: میزان فضای جدید برای فایل لاگ را انتخاب میکند.
- Empty file by migrating the data to other files in the same file group: محتوای فایل لاگ فعلی را به فایلی دیگر منتقل میکند.
در پایان Recovery Model را به Full تغییر دهید.
حذف لاگ را با دقت انجام دهید تا اطلاعات شما از بین نرود. همچنین، پیشنهاد میشود قبل از حذف لاگ، از دیتابیس خود بکآپ گرفته تا در صورت نیاز بتوانید اطلاعات را بازیابی کنید.
بدون دیدگاه