• linkedin
خوش آمدید , مهمان - ورود اینجا ثبت نام اینجا . فعال سازی حساب کاربری

Google


normal_post - خلاص شدن از دست حجم زیاد فایل‌های Log در SQL Server - متا نویسنده موضوع: خلاص شدن از دست حجم زیاد فایل‌های Log در SQL Server  (دفعات بازدید: 4879 بار)

0 کاربر و 1 مهمان درحال دیدن موضوع.

آفلاین سید علا سبزپوش

مدت‌ها است که دارای یک فایل پایگاه داده هستیم که حجم خود فایل داده‌ها (mdf) حدود ۴۵۰ مگابایت است، این در حالی است که حجم فایل log آن حدود ۱۲.۵ گیگابایت است. این حجم زیاد مشکلاتی برای ما ایجاد کرده بود از جمله از بین بردن فضای هارددیسک سرورمان و بالا بودن حجم آن برای ارسال ازطریق اینترنت.

همان‌طور که می‌دانید هر پایگاه داده شامل ۲ فایل می‌باشد، فایل اول، فایل اصلی است که اصل داده‌ها روی آن نگهداری می‌شوند (فایلی با پسوند mdf)  و حجم آن عددی کاملا متعارف است. دومین فایل مربوط به ثبت وقایع اتفاق افتاده روی پایگاه داده است و هر تراکنشی که روی پایگاه داده انجام می‌شود روی این فایل ذخیره می‌شود (فایلی با پسوند ldf)، به همین دلیل حجم این فایل به سرعت در حال زیاد شدن است و زمانی که کل فضای هارددیسک را اشغال کند، عملا دیگر هیچ عملیاتی روی پایگاه داده انجام نمی‌شود. لازم به ذکر است که ابزارهایی برای بازیابی داده‌ها از روی این فایل وجود دارد.

فکر می‌کردم که با یک Shrink ساده از طریق خود SQL Server  می‌توانم این فضا را آزاد کنم ولی وقتی این کار را انجام دادم دیدم که فقط حدود یک گیگابایت از حجم آن کم شده که اصلا برای من قابل قبول نبود. به همین منظور کمی در این زمینه مطالعه کردم و به جاهای خوبی رسیدم.

یادمه که در نسخه ۲۰۰۰ می‌توانستیم یک پایگاه داده را 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 در صفحه جدید کلیک نمایید. با این کار حجم فایل من که حدود ۱۲.۵ گیگابایت بود به حدود ۱۶۰ مگابایت رسید!!!؟؟!!

منبع : http://ramezani.wordpress.com/2010/09/25/shrink-log-files/

Linkback: https://irmeta.com/meta/b1419/t4639/
ما عاشق فهم و ادب ومعرفتیم،
ما خاک قدوم هر چه زیبا صفتیم،
http://math2easy.com

آفلاین b721947

xx - خلاص شدن از دست حجم زیاد فایل‌های Log در SQL Server - متا
پاسخ : خلاص شدن از دست حجم زیاد فایل‌های Log در SQL Server
« پاسخ #1 : ۳ شهریور ۱۳۹۴ - ۲۰:۱۶:۱۲ »
با سلام

از دستور T-SQL زیر استفاده کنید:

USE Db_Name;" + "DBCC SHRINKDATABASE(N'Db_Name' );
DBCC SHRINKFILE (N'Db_Name' , 0, TRUNCATEONLY);
DBCC SHRINKFILE (N'Db_Name_log' , 0, TRUNCATEONLY);

با احترام


اشتراک گذاری از طریق facebook اشتراک گذاری از طریق linkedin اشتراک گذاری از طریق twitter

xx
غیرفعال کردن SQL SERVER 2008

نویسنده hanieh_88

2 پاسخ ها
2942 مشاهده
آخرين ارسال ۳ شهریور ۱۳۹۴ - ۱۹:۳۱:۱۰
توسط b721947
 

anything