ورود

View Full Version : بازیابی رکوردهایی که در Page های آسیب دیده ذخیره شده اند



In_Chan_Nafar
دوشنبه 06 فروردین 1386, 13:09 عصر
با سلام
اگر در یک بانک اطلاعاتی تعدادی از page های مربوط به آن آسیب دیده باشد (تعدادی از جدوال اطلاعاتی را بر روی آن Page) دارند آیا می توان رکوردهای آسیب دیده را بازیابی کرد

با توجه به اینکه بانک اطلاعاتی من آسیب دیده هنگام Select زدن بر روی یک جدول مشخص سیستم خطایی به صورت زیر به من نمایش می دهد می خواهستم بدونم آیا راهی است که از طریق یک برنامه کمکی و یا از طریق خود Sql به رکوردهای آسیب دیده دسترسی پیدا کرد

در ضمن من وقتی از جدول مورد نظر Select می گیرم سیستم تعدادی از رکوردها را بازیابی و بقیه آنها را نمی تواند بازیابی کند (Count رکوردهای جدول با رکوردهای نمایش داده شده فرق می کند)

AminSobati
دوشنبه 06 فروردین 1386, 17:27 عصر
از دیتابیس Backup بگیرین و به کمک DBCC CHECKDB و پارامترهای Repair ببینید میتونه مشکل رو حل کنه یا نه

In_Chan_Nafar
سه شنبه 07 فروردین 1386, 10:31 صبح
پس از اجرای دستور اشاره شده پیغام خطای زیر رویت شد. می خواستم بدونم آیا امکانش هست که این مشکل حل بشه و یا خیر؟
در ضمن متاسفانه من حتی نتونستم فایل MDF را کپی بگیرم چون هنگام کپی پیغام خطای مربوط به آسیب دیدن قسمتی از فایل را گرفتم (لازم به ذکر است که بانک اطلاعاتی را "دی اتج" کرده بودم)


Server: Msg 8909, Level 16, State 1, Line 1
Table error: Object ID -1, index ID 65535, page ID (1:11713). The PageId in the page header = (65535:-1).
Server: Msg 8928, Level 16, State 1, Line 1
Object ID 453628709, index ID 0: Page (1:11713) could not be processed. See other errors for details.
Server: Msg 8976, Level 16, State 1, Line 1
Table error: Object ID 453628709, index ID 1. Page (1:11713) was not seen in the scan although its parent (1:187) and previous (1:10815) refer to it. Check any previous errors.
Server: Msg 8978, Level 16, State 1, Line 1
Table error: Object ID 453628709, index ID 1. Page (1:16039) is missing a reference from previous page (1:11713). Possible chain linkage problem.
The repair level on the DBCC statement caused this repair to be bypassed.
CHECKTABLE found 0 allocation errors and 1 consistency errors in table '(Object ID -1)' (object ID -1).
DBCC results for 'نام جدول'.
The repair level on the DBCC statement caused this repair to be bypassed.
The repair level on the DBCC statement caused this repair to be bypassed.
The repair level on the DBCC statement caused this repair to be bypassed.
There are 6147 rows in 273 pages for object 'نام جدول'.
CHECKTABLE found 0 allocation errors and 3 consistency errors in table 'نام جدول' (object ID 453628709).
repair_allow_data_loss is the minimum repair level for the errors found by DBCC CHECKTABLE (Test.dbo.نام جدول repair_rebuild).

AminSobati
سه شنبه 07 فروردین 1386, 15:24 عصر
دقیقا چه دستوری اجرا کردین (پارامترها؟)

h_sadeghynejad
سه شنبه 07 فروردین 1386, 16:14 عصر
من خودم یه بار این مشکل برام پیش اومد
1 ) این مقال (http://www.esha.com/kb/questions/12/)ه رو چک کن ببین میتونی با راه حلی که ارائه داده کارت رو درست کنی
2 ) از برنامه MsSqlRecovry استفاده کن ببین میتونی درستش کنی یا نه که توی این آدرس لینکش (http://www.officerecovery.com/mssql/index.htm) هست

In_Chan_Nafar
چهارشنبه 08 فروردین 1386, 13:42 عصر
متاسفانه برنامه ای که معرفی کرده اید نتوانست اطلاعات جداول آسیب دیده را بازیابی کند (بازیابی اطلاعات به صورت باینری (نامشخص = غیر تکست)) بر می گرداند شاید این به دلیل که برنامه Trial است این مورد پیش آمده علاوه اما من در جدوال دیگه دیدم که برنامه کلمه Demo را به جای داده های رشته ای می نویسد ...
اما در مورد سوال آقای ثباتی باید عرض کنم که من دستور Dbcc Checkdb را بر جدول مورد نظر خودم البته پارامتر آن Repair_Rebuild را زدم که خطای فوق را گرفتم

AminSobati
چهارشنبه 08 فروردین 1386, 17:51 عصر
با پارامتر REPAIR_ALLOW_DATA_LOSS هم چند بار انجام بدین

In_Chan_Nafar
چهارشنبه 08 فروردین 1386, 18:16 عصر
آقای ثباتی من تمامی پارامترهای و دستورات مربوط به Repair Data base را بر روی بانک خودم تست کردم ولی اصلا جواب نگرفته ام نمی دونم به نظر شما راهی برای بازیابی اطلاعات وجود دارد

h_sadeghynejad
چهارشنبه 08 فروردین 1386, 19:16 عصر
این مقاله رو امتحان کردید آخه خودم یه بار این مشکل برام پیش اومد و حل شد
http://www.esha.com/kb/questions/12 (http://www.esha.com/kb/questions/12/)

AminSobati
پنج شنبه 09 فروردین 1386, 10:41 صبح
راستش مشکل بزرگیه! فقط داشتن Backupهای منظم میتونه کمک کنه. یکی از دلایل اینکه Adminهای با تجربه دستور DBCC CHECKDB رو حداقل روزی 2 بار انجام میدن همینه که به محض پیدا شدن خرابی فیزیکی، برن سراغ Backup . در بعضی موارد این مشکل میتونه به Pageهای دیگه ای در داخل دیتابیس سرایت کنه.
اما در وضعیت شما، اگر مقالاتی که دوستان اشاره کردند مشکل رو حل نکرد، سعی کنین اطلاعات رو جدول به جدول به یک دیتابیس جدید Export کنین. بالاخره در این روش متوجه میشین دقیقا خرابی روی کدوم رکوردها قرار داره، و همچنین رکوردهای سالم رو هم نجات دادین!

In_Chan_Nafar
پنج شنبه 16 فروردین 1386, 22:32 عصر
با سلام دوستان من با بدبختی تمام با استفاده از برنامه Apex SQL log توانستم با استفاده از فایل Log دیتابیس اطلاعات تعدادی از جداول را بازیابی کنم اما مشکل ااصلی روی فیلدهای Image است متاسفانه این برنامه و یا تعدادی از این نوع برنامه ها توانایی کا کردن با این نوع داده ها (image,text,ntext)را ندارند از دوستان می خواستم بدونم کسی برنامه ای سراغ داره که داده های باینری را هم بتوان از آن بازیابی کرد راستی تا یادم نرفته انشاا... بزدوی آموزش و نکاتی را که در مورد کار کردن با این برنامه و چگونگی استفاده از Log ,.... را در یک مقاله آموزشی در اختیار دوستان قرار خواهم داد