مشكل افزايش حجم ldf در sql server
برخی اوقات در 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 را کلیک کنید.
این وبلاگ به دور از هر گونه حاشیه تنها به مباحث فناوری اطلاعات و ارتباطات می پردازد. برخی مطالب به عنوان نکات قابل توجه از سایتهای دیگر در این وبلاگ درج میشود که حتما از نویسنده اصلی با ذکر منبع تقدیر و تشکر خواهد شد.