1397-06-06 10:14 حذف لاگ های یک دیتابیس که از حالت میرور خارج شده است
Eli.bmn

 
سلام دوستان عزیز
من یک مشکل بزرگ دارم که مدتهاست نتونستم حلش کنم و هیچ مطلبی در این زمینه توی اینترنت هم ندیدم لطفا اگر میتونید راهنمایی کنید ممنون میشم.
من دوتاسیستم سرور دارم که یکی سرور اصلی هست و دومی به صورت میرور (mirror) به دیتابیس سرور اصلی مرتبط هست . سرور اصلی فایل لاگش طوری تنظیم شده بود که باید قبل از اینکه به 15 گیگ برسد shrink شود وگرنه suspend میشد من هرکاری میکردم فایل لاگ رو شرینک کنم هیچ تغییری توی سایزش ایجاد نمیشد و روزبه روز بزرگتر میشد من هم اول از حالت میرور خارجش کردم و دوباره امتحان کردم باز شرینک نشد برای تست یک لاگ جدید اضافه کردم و فکر میکردم لاگ قبل سایزش همونجا متوقف میشه و ادامه لاگ ها از لاگ جدید شروع میشه اما متاسفانه این اتفاق نیوفتاد و همزمان هر دو لاگ داره رشد میکنه ،وقتی میخوام مقدار لاگ ها رو دستی یک کنم و اکی میزنم هیچ اروری نمیده ولی وقتی برمیگردم سایز رو نگاه میکنم میبینم همون سایز هست اگر هم بخوام لاگ رو دستی حذف کنم ارور میده این فایل در حال استفاده است. خواستم دیتچ کنم و فایل اصلی رو بدون لاگ اتچ کنم بهم اجازه نمیداد و ارور میداد فایل های لاگ هم باید باشد.دیگه هیچ راهی به ذهنم نمیرسه بنظرتون چی مانع از حذف یا شرینک لاگ ها میشه؟
1397-06-06 22:04
حاجی شریفی
مؤسس سایت
 
سلام
سه مطلب وجود دارد که شاید کمک تان کند.

اول آنکه فایل لاگ SQL Server همیشه مرتبط با بحث Backup است.
یک سمت دیگر این جریان هم به تنظیم RECOVERY در دیتابیس متصل میشود.

اگر RECOVERY روی SIMPLE باشد، شاید اصلا لاگی نسازد.
ALTER DATABASE [database-name]  SET RECOVERY SIMPLE WITH NO_WAIT



دوم آنکه یک بار از دیتابیس backup-full بگیرید، احتمال زیادی دارد با backup-full لاگ هایتان خالی شود، نهایت یکبار هم بعدش Shrink کنید.
BACKUP DATABASE [database-name]  TO DISK = N'D:\File.bak' WITH NOFORMAT, NOINIT, SKIP, NOREWIND


سوم آنکه میتوانید دیتابیس را بدون ldf-لاگ attach کنید. بدون دیالوگ و UI و... کد زیر را امتحان کنید.
CREATE DATABASE [database-name] 
ON ( FILENAME = 'D:\File.mdf' )
FOR ATTACH


انشاا... موفق باشید.