فرهاد خانلری
کارشناس ارشد شبکه مایکروسافت

آموزش کم کردن حجم فایل لاگ (LDF) در SQL Server

حتما با بانک SQL کار کردید وقتی یک بانک ایجاد میکنید یک فایل اصلی که کلیه اطلاعات داخل فایلی با پسوند MDF که مخفف master database file هست ذخیره میشه در همین هنگام فایل دیگری با پسوند LDF که مخفف log database file هست ایجاد می شه و وظیفه این فایل نگهداری LOG ها و رویداد ها و ثبت تراکنش ها و اطلاعات جانبی در مورد پایگاه داده هست. LOG فایل ها گاهی اوقات بسیار کار آمد هستند ولی گاهی پیش میآید که حجم این فایل ها بسیار شده و به چندین GIG میرسد که در این صورت نگهداری این فایل های حجیم کار ساده ای نیست . در این مطلب یاد میگیریم که چطور میتونیم این LOG فایل ها رو از بین ببریم.توسط دستور زیر روی پایگاه داده SQL Server به اطلاعات جالبی میتوان دست پیدا کرد مانند تصویر زیر:

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
exec sp_helpfile
پاک کردن LDF در پایگاه داده SQL

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

  • name : نام پایگاه SQL همچنین LOG File رو نشون میده در اینجا نام پایگاهمون itpro هست و فایل لاگ نگهداری می شود.
  • FileName : در این ستون آدرس محل نگهداری فایل های پایگاه SQL نگهداری می شود.
  • size : در این ستون حجم فایل های MDF و LDF پایگاه نمایش داده می شود.

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

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

به جای DatabaseName باید نام پایگاه وارد شود و همچنین LogicalLogfileName باید برابر با نام منطقی پایگاه می باشد برای مثال ما باید کد زیر درج گردد.

 exec sp_helpfile

BACKUP LOG itpro WITH TRUNCATE_ONLY
GO
DBCC SHRINKFILE (itpro_log, 1)
GO
DBCC SHRINKFILE (itpro , 1)

exec sp_helpfile

یادتان باشد که پس از استفاده از دستورات فوق زنجیره فایل های LOG پایگاه SQL پراکنده و گاهی هم از بین میرود یا از دسترس خارج میشود ، پس بهتر است قبل از این کار از لاگ های مهم خود Backup تهیه کنید . برای حذف کردن فایل Data یا فایل log در sql از کد زیر استفاده کنید

    1. قدم اول به بانک اطلاعات مورد نظر جهت پاک کردن متصل شوید.
    2. New Query را جهت درج کوءری جدید بزنید.
    3. کد زیر را نسبت به پایگاه داده خود تغییر داده و در نهایت اجرا یا execute کنید .
USE master;
GO
ALTER DATABASE sql2014
REMOVE FILE test;
GO

فایل test از بانک sql2014 پاک میشود.


فرهاد خانلری
فرهاد خانلری

کارشناس ارشد شبکه مایکروسافت

فرهاد خانلری ، مدرس شبکه و برنامه نویسی مبتنی بر زیرساخت های مایکروسافت ، سابقه فعالیت در موسسات و مراکز دولتی در قالب پروژه ، مشاوره و تدریس ، برنامه نویسی ++C ، سی شارپ و دات نت ، متخصص و مدرس شبکه های مبتنی بر سیستم عاملهای مایکروسافت و سرویس های مربوطه ، سخت افزار و ...

نظرات