برخی اوقات در SQL SERVER حجم فایل LOG ما رشد تصاعدی میکند و این موجب کند شدن عملیات تراکنش داده و در نتیجه کند شدن فرآیندهای سازمانی متصل به پایگاه داده ما میشود.همانگونه که میدانید LOG تراکنشهای سازمانی در فایل LDF در پایگاه داده ذخیره میشود حال انکه دیتای اصلی در فایل MDF میباشد.

در نسخه ۲۰۰۰ می‌توانستیم یک پایگاه داده را Detach کنیم و فایل ldf مربوط به آن را حذف کنیم، زمانیکه دوباره پایگاه داده را attach می‌کردیم یک فایل ldf جدید ساخته می‌شد اما در نسخه‌های بعد از آن چنین امکانی وجود ندارد.

در نسخه‌های جدید برای shrink کردن ابتدا باید عملیات log truncation را انجام دهیم. این عملیات در دو حالت اتفاق می‌افتد:

۱- در مدل بازیابی ساده (simple recovery model) بعد از یک checkpoint اتفاق می‌افتد.

۲- در مدل بازیابی کامل (full recovery model) و مدل بازیابی bulked-log ، پس از پشتیبان‌گیری از log .

هر فایل log دارای یک بخش غیرفعال است که در عملیات  truncate کردن فقط این بخش از پایگاه داده آزاد می‌شود. بخش غیر فعال به بخشی گفته می‌شود که مربوط به اتفاقاتی است که commit شده‌اند و عملا بودن یا نبودن آن‌ها هیچ مزیتی برای ما ندارند.

 

راه اول:
طبق مواردی که در بالا بیان شد برای اینکه بتوانیم حجم این فایل را کم کنیم باید ابتدا عملیات truncation را انجام دهیم و سپس آن را shrink کنیم. برای truncate کردن باید از فایل log پشتیبان بگیریم. برای انجام این کار از طریق SQL Server Management Studio کاری شبیه به پشتیبان‌گیری معمولی انجام می‌شود، فقط باید نوع پشتیبان‌گیری را از نوع  Transaction Log انتخاب کرد. زمانی که این نوع انتخاب شود می‌توان از بخش Options تعیین کرد که آیا عملیات truncate کردن انجام شود یا خیر. از این بخش مقدار پیش‌فرض را تغییر ندهید. زمانی‌که محل مورد نظر برای پشتیبان‌گیری را انتخاب کردید روی دکمه OK کلیک کنید تا پشتیبان‌گیری انجام شود.

بعد از این مرحله برای shrink کردن پایگاه داده روی نام پایگاه داده کلیک راست ماوس را زده و از بخش Tasks گزینه Shrink و سپس Database را انتخاب نمایید و روی دکمه OK در صفحه جدید کلیک نمایید. با این کار حجم فایل من که حدود ۱۲.۵ گیگابایت بود به حدود ۱۶۰ مگابایت رسید.(بخشهایی از این مطلب را از اینترنت برداشت نمودم که چون خیلی جاها کپی شده بود تشخیص منبع اصلی دشوار بود وذکر نکردم و باید از نویسنده اصلی تشکر کنم)

 

برای کاهش حجم پایگاه داده SQL Server 2005 و فایل ها شما میتوانید فایل های پایگاه داده خود را Truncatکنید.ابتدا وارد دات نت پنل شوید.

راه دیگر استفاده از دستور زیر به عنوان یک QUERY است:

BACKUP LOG DATABASE-NAME WITH TRUNCATE_ONLY

مثلا اگر نام پایگاه داده شما TOLID بود دستور زیر:

Backup log tolid with truncate_only

راه بعدی نیز به شرح زیر است:

ابتدا وارد دات نت پنل شوید.

. از قسمت Database گزینه ی Sqlserver Database را انتخاب کنید.

.روی بانک  داده ای که می خواهید Truncate کنید کلیک کنید.

. صفحه ی Sql Database properties باز خواهد شد.

. در نهایت دکمه ی Truncate files را کلیک کنید.