ورود

View Full Version : یه کمک حیاتی برای Restore کردن اطلاعات



kasmaii61
پنج شنبه 24 اسفند 1385, 09:08 صبح
سلام دوستان
من یک data base با Sql server 2000 دارم
متاسفانه 4 روز پیش به اشتباه نوع سه تا فیلد رو از Ntext با Length برابر 16 به Nchar به همون طول تغییر دادم
امروز متوجه شدم که بر اثر این تغییر مقادیر زیادی از اطلاعات فیلدهای من از بین رفته
یعنی در حقیقت از هر فیلدی که بیشتر از 16 کرکتر بوده رو اطلاعات بعد از کرکتر 16 حذف شده
حالا می خواستم بدونم آیا امکان داره این اطلاعات رو بر گردونم(در این مدت یکسری اطلاعات جدید هم وارد شده)
اگر امکان نداره که این اطلاعات رو بر گردونم می خواستم بدونم چه جوری می تونم Database رو به تاریخ 4 روز پیش restore کنم
آیا برای این کار وجود تنها فایل Transaction log کافی یا حتما یه BACK UP هم باید از بانک داشته باشم چون متاسفانه آخرین Back up برای 12 روز پیش و بازگشت به اون خیلی از اطلاعات رو از دست میدم
ممنون از کمکتون

Behrouz_Rad
پنج شنبه 24 اسفند 1385, 09:30 صبح
باید Backup رو داشته باشی.
متاسفم.

hamed_bostan
پنج شنبه 24 اسفند 1385, 10:14 صبح
بهروز جان یه سوالی واسه من پیش اومده که این تاپیک رو دیدم گفتم بپرسم . پس نقش این فایل ldf یا همون لاگ فایل کنار فایل data دیتابیش ای« وسط چیه؟ چطور میشه به اون دسترسی داشت و اونو خوند یا ازش استفاده کرد؟

Behrouz_Rad
پنج شنبه 24 اسفند 1385, 11:11 صبح
فایل LDF برای نگهداری Transaction ها به کار میره و مثلا اگر با یک دستور Update یا Delete اشتباه رکوردهایی رو حذف کنی، میشه اونها رو به حالت اولیه باز گردوند.
البته در حالتی که Recovery Model بر روی Simple باشه، SQL Server، اطلاعات فایل Log رو Overwrite می کنه.
البته حالت های BULK و Full هم هستند که باعث افزایش حجم فایل Log میشن که اگر محدودیتی در فضا نداری بهتره بر روی این حالات باشن.
ابزارهای متعددی برای خوندن فایل Log وجود داره، از جمله: Apex SQL Log، Log Explorer، SQL Log Rescue و ...

احتمالا اگر در حالت Simple نباشه، با توجه به اینکه گفته میشه که مربوط به 12 روز پیش هست و ممکنه تراکنش های زیادی انجام شده باشه، باید بتونه اطلاعات رو برگردونه!

موفق باشید.

kasmaii61
پنج شنبه 24 اسفند 1385, 13:23 عصر
احتمالا اگر در حالت Simple نباشه، با توجه به اینکه گفته میشه که مربوط به 12 روز پیش هست و ممکنه تراکنش های زیادی انجام شده باشه، باید بتونه اطلاعات رو برگردونه!


دوست عزیز آقای بهروز راد می تونی بگی چه جوری می تونم اطلاعات رو بازیابی کنم

Behrouz_Rad
پنج شنبه 24 اسفند 1385, 13:42 عصر
نسخه ی evaluation برنامه ی Log Explorer رو می تونی از سایت رسمیش در آدرس زیر داونلود کنی:
http://www.lumigent.com/Products/le_sql.html

برنامه ی Apex SQL Log
http://www.apexsql.com/sql_tools_log.asp

برنامه ی SQL Log Rescue
http://www.red-gate.com/products/SQL_Log_Rescue/index.htm

hamed_bostan
پنج شنبه 24 اسفند 1385, 15:56 عصر
بهروز جان نمیشه از طریق برنامه نویسی یا tsql از یه تاریخ به بعد رو در از لاگ فایل recover کرد؟

Behrouz_Rad
پنج شنبه 24 اسفند 1385, 18:12 عصر
با دستور RESTORE LOG و تعیین مقدار پارامتر STOPAT به تاریخ و زمان جاری امکان پذیر هست.
اون ابزارها لیست تمامی Transaction ها رو به تو نشون میدن و تو می تونی یک عملیات خاص رو بازیابی کنی.
اما RESTORE LOG تمامی تراکنش ها رو بازیابی می کنه و کنترلی بر تراکنش دلخواه نداری.
با اون ابزارها حتی مقادیر تغییر داده شده نیز قابل مشاهده هستند.

موفق باشید.

neda azadi
پنج شنبه 24 اسفند 1385, 22:45 عصر
فایل LDF برای نگهداری Transaction ها به کار میره و مثلا اگر با یک دستور Update یا Delete اشتباه رکوردهایی رو حذف کنی، میشه اونها رو به حالت اولیه باز گردوند.
البته در حالتی که Recovery Model بر روی Simple باشه، SQL Server، اطلاعات فایل Log رو Overwrite می کنه.
البته حالت های BULK و Full هم هستند که باعث افزایش حجم فایل Log میشن که اگر محدودیتی در فضا نداری بهتره بر روی این حالات باشن.
ابزارهای متعددی برای خوندن فایل Log وجود داره، از جمله: Apex SQL Log، Log Explorer، SQL Log Rescue و ...

احتمالا اگر در حالت Simple نباشه، با توجه به اینکه گفته میشه که مربوط به 12 روز پیش هست و ممکنه تراکنش های زیادی انجام شده باشه، باید بتونه اطلاعات رو برگردونه!

موفق باشید.

چه طوری می شه Recovery Model را تعیین کرد ؟

AminSobati
پنج شنبه 24 اسفند 1385, 23:04 عصر
توضیحات بهروز جان کامل بود فقط من این مطلب رو برای آقای kasmaii61 اضافه میکنم که شما باید:
1) Full Backup قبل از بروز خطا در دیتابیس رو داشته باشید
2) Recovery Model رو قبل از مرحله 1 به Full تغییر داده باشید
3) حالا Log Backup بگیرید و به روش Point-in-time Recovery دیتابیس رو به زمان قبل از خطا برگردونین

hedayat
شنبه 26 اسفند 1385, 07:15 صبح
البته در حالتی که Recovery Model بر روی Simple باشه، SQL Server، اطلاعات فایل Log رو Overwrite می کنه.
البته حالت های BULK و Full هم هستند که باعث افزایش حجم فایل Log میشن که اگر محدودیتی در فضا نداری بهتره بر روی این حالات باشن.
.

می شه درباره حالت های BULK و Full و Simple یه کم بیشتر توضیح بدین
و این که کجا باید این حالت رو set کنی که بشه مثلا از حالت Full استفاده کرد که بتوان دیتابیس رو تا یک روز و ساعت خاص برگرداند .
با تشکر::چشمک: :چشمک:

Behrouz_Rad
شنبه 26 اسفند 1385, 13:20 عصر
بر روی نام دیتابیس، راست کلیک و گزینه ی Properties رو انتخاب کن.
در فرمی که باز میشه، از سربرگ Options و در قسمت Recovery، گزینه ی مورد نظر رو انتخاب کن.

موفق باشید.

kasmaii61
یک شنبه 05 فروردین 1386, 22:21 عصر
دوستان خیلی خیلی از کمکاتون ممنون
با یه برنامه ای که خودم نوشتم تا حد خیلی زیادی از روی همون Back up قبلی اطلاعات رو برگردوندم
با استفاده از کمکایی که کردین سعی می کنم این مشکل دوباره پیش نیاد
بازم ممنون

alitanha
یک شنبه 12 فروردین 1386, 02:00 صبح
ا عرض سلام
یک پایگاه داده درست کردم که در اون از پایگاه داده Back Up میگیرم !
ولی در مورد Restore کردن اون مشکل دارم چون میگه که برنامه (Sl server 2005)در حال اجرا بوسیله برنامه دیگری است و باید حتما وارد برنامه sql شد و اون را stop کرد تا بتونه این کارو انجام بده ؟!!!
حالا راهنمایی می خوام که چطوری بدون stop کردن برنامه sql(یا هر راه حلی که user نخواد خودش اینکارو انجام بده) بتونم Restore کنم؟ متشکر علی
Sadehdel2007

mhd78
یک شنبه 12 فروردین 1386, 16:45 عصر
می توانی در زمانی که می خواهی عمل Restore را انجام دهی از بانک خودت خارج شوی و مثلا به بانک Master وصل شوی و بعد از Restore کردن دوباره به بانک خودت وصل شوی با انجام این عمل کاربر متوجه خروج از بانک نمی شود