امروز با خطایی عجیبی در یکی از دیتابیس های یوزر ها در Sql server 2005 برخوردم . همانطور که در تصویر بالا می بینید دیتابیس یوزر با خطای Suspect مشاهده می شود. از آنجا که هم اکنون با sql server آشنایی زیادی ندارم اطلاعی از نحوه رخداد این موضوع نداشتم با کمی جستجو به نتایج جالبی رسیدم که در ادامه برای شما درج می نمایم.
اقدامات عمومی که پس از رخداد خطا انجام دادم به شرح زیر است :
- از دیتابیس بک آپ تهیه نمودم ( اجازه بک آپ گیری داده نشد و با خطا مواجه شد )
- از فایل های .ldf و ,mdf کپی برداشته و ذخیره کردم
- دیتابیس را detach و سپس attach کردم که با ارور مواجه شدم .
- دیتابیس را حذف و مجدد ایجاد کرده و فایل های .mdf و .ldf را در پوشه data کپی کردم و سپس سرویس sql server را reset کردم . باز هم با خطای Suspect مواجه شدم.
علل احتمالی رخداد این موضوع موارد زیر در جستجو به دست آمد
- خراب شدن به اصطلاح کراپت corrupted شدن دیتابیس
- عدم وجود فضای کافی برای بازیابی دیتابیس و اجرای آن
- عدم دسترسی ( permission ) دیتابیس به فایل های خود
- اشغال دسترسی (session) توسط نرم افزار دیگر مانند بک آپ گیری
- قطع شدن نا بهنگام سرور به دلیل قطع برق یا خرابی سخت افزار
خوشبختانه یا متاسفانه سرور دیتابیس به دلیل اختلال برق یکباره خاموش شده بود ، پس می توان حدس زد این موضوع دلیل به وجود آمدن این مشکل برای یوزر شده بود.
اما راه حلی که مشکل را برطرف نمود . بر روی دیتابیس کلیک راست کنید و یک کوئری باز نمایید.
کدهای زیر را در آن قرار دهید ، توجه داشته باشید به جای گزینه YourDatabase
در کدها نام دیتابیس را قرار دهید . سپس کوئری را Execute نمایید و کمی صبر کنید.
[php]
EXEC sp_resetstatus [YourDatabase];
ALTER DATABASE [YourDatabase] SET EMERGENCY
DBCC checkdb([YourDatabase])
ALTER DATABASE [YourDatabase] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
DBCC CheckDB ([YourDatabase], REPAIR_ALLOW_DATA_LOSS)
ALTER DATABASE [YourDatabase] SET MULTI_USER
[/php]
منتظر باشید تا کوئری در مدت کوتاهی run شده و دیتابیس را fix نماید. سپس بر روی دیتابیس راست کلیک نمایید و دیتابیس را Refresh نمایید. امیدوارم مورد حل شود.
گردآوری شده : GerixSoft , CODE PROJECT , msdn Microsoft
منبع : وبلاگ عادلی
۵ دیدگاه روشن رفع خطای suspect در Ms SQL Server
ممنونم آقای مهندس از راهنمایی صریح،کاربردی، و عالی که داشتید.
هرچند که برخی از رکوردهای اطلاعاتی از بین رفت اما باعث شد که دیتابیس از حالت ساسپکت خارج بشه و امکان ویرایش جداول وجود داشته باشه.
خیلی ممنونم…..روز بخیر
با سلام و احترام
ممنون که تجربه خود را به اشتراک گذاشتید.
موفق باشید.
ممنون از راهنماییتون مشکلم حل شد.
با سلام
همه چیزهایی که گفته شد، درست و در N تا وب سایت دیگه هم دیده شده اما مشکل بنده اینه که دستور CheckDB اجرا نمیشه، اینو چیکارش کنم.
لطفا اسکرین شات خطا رو ارسال نمایید . امیدوارم دیتابیس corrupted نشده باشد که ریکاور آن سخت است.