۱۳۸۸/۰۹/۲۶

عدم كاهش حجم لاگ فايل SQL Server


در مورد روش‌هاي كاهش حجم لاگ فايل‌هاي SQL Server در اين مطلب بحث شد.
اما يكي از ديتابيس‌هاي قديمي shrink نمي‌شد و پيغام خطاي زير را صادر مي‌كرد:

Cannot shrink log file 2 because of minimum log space required.

يكي از علت‌هايي كه اگر مطابق روش ذكر شده در مقاله ياده شده رفتار شود، سبب كاهش حجم لاگ فايل يك ديتابيس نمي‌شود، وجود تراكنش‌هاي كامل نشده است. جهت مشاهده‌ي وضعيت تراكنش‌هاي يك ديتابيس مي‌توان دستور زير را صادر كرد:

DBCC OPENTRAN
كه نتيجه به صورت زير بود:

Replicated Transaction Information:
Oldest distributed LSN : (0:0:0)
Oldest non-distributed LSN : (5291:25:1)

وجود سطر مربوط به Oldest non-distributed LSN به اين معنا است كه هنوز يك replication نا تمام بر روي اين ديتابيس موجود است. البته چون اين ديتابيس از يك سرور ديگر به اينجا منتقل شده بود و هيچ نوع replication ايي هم در اين سرور بر روي آن تنظيم نشده بود؛ بنابراين ابتدا اين replication حذف شد:
exec sp_removedbreplication 'dbName', 'both';

سپس مجددا دستور زير جهت مشاهده‌ي وضعيت تراكنش‌هاي ناتمام صادر شد:
DBCC OPENTRAN

كه اين‌بار ديگر هيچ خروجي نداشت.
اكنون با استفاده از روش ذكر شده، لاگ فايل 70 گيگابايتي اين ديتابيس به سادگي به چند مگابايت shrink شد.