ورود

View Full Version : پاك كردن سطرها بدون افزايش لاگ فايل



kohyar
شنبه 16 مرداد 1389, 14:56 عصر
سلام دوستان
من مي خوام وقتي در اس كيو ال سرور 2000 تعدادي زيادي از ركوردها توسط queryanalyzer پاك مي كنم
تراكنش ها داخل LogFile نوشته نشه و حجم اون بالا نره
دستور Truncate Table كل اطلاعات جدول رو پاك ميكنه و در داخل لاگ فايل نمي نويسه
ولي نمي تونم در داخل اين دستور از where استفاده كنم
خيلي حياتيه
مرسي

ahmad_eagle2002
شنبه 16 مرداد 1389, 15:08 عصر
truncate اطلاعات شما رو page به page پاك ميكنه پس سرعت بالاتري داره و log file هم نداره وطبيعتا چون ركورد به ركورد خوانده نشده پس وجود where هم توش بي معني است

حمیدرضاصادقیان
شنبه 16 مرداد 1389, 15:19 عصر
سلام دوستان
من مي خوام وقتي در اس كيو ال سرور 2000 تعدادي زيادي از ركوردها توسط queryanalyzer پاك مي كنم
تراكنش ها داخل LogFile نوشته نشه و حجم اون بالا نره
دستور Truncate Table كل اطلاعات جدول رو پاك ميكنه و در داخل لاگ فايل نمي نويسه
ولي نمي تونم در داخل اين دستور از where استفاده كنم
خيلي حياتيه
مرسي
سلام.شما میتونید از روش معمولی Delete استفاده کنید و مدل Recovery دیتابیس رو روی simple بذارید و گزینه Auto shrink رو انتخاب کنید.با اینکار حجم لاگ فایل افزایش نخواهد یافت.
البته درصورتی که فایل لاگ برای شما اهمیت چندانی نداشته باشد و ازاون نخواهید backup داشته باشید.درغیر اینصورت باید یک job تعریف کرده از فایل log یک backup تهیه کرده بعد از اون اقدام به Shrink کنید که حجم فایل لاگ کاهش پیدا کند.
موفق باشید

حمیدرضاصادقیان
شنبه 16 مرداد 1389, 15:23 عصر
truncate اطلاعات شما رو page به page پاك ميكنه پس سرعت بالاتري داره و log file هم نداره وطبيعتا چون ركورد به ركورد خوانده نشده پس وجود where هم توش بي معني است
سلام.دلیل سرعت بالای Truncate نسبت به Delete این هست که Delete به ازای هر رکوردی که حذف میکنه یک ردیف در فایل log ثبت میکنه در صورتی که Truncate تنها page های آزاد شده رو در فایل لاگ به ثبت می رسونه.