وضعیت سرورها

وبــلاگ

وضعیت سرورها
  • ترمیم پایگاه‌داده MSSQL Server 2008 R2

    بهاره قلندرنژاد چهارشنبه ۱۶ مرداد ۱۳۹۲ آموزش

    ترمیم بانک‌اطلاعاتی MSSQL Server 2008 R2

    پایگاه‌داده‌ی MSSQL Server بنا به دلایل مختلفی مانند «قطع برق، خاموشی ناگهانی سیستم، در دسترس نبودن فایل‌های پایگاه داده، حذف عمدی یا سهوی داده‌ها، خراب شدن دیسک سرویس دهنده و غیره»، ممکن است از دسترس خارج گردد. چنانچه هرکدام از این اتفاقات در زمان باز بودن تراکنش‌ها (فعالیت MSSQL) رخ دهد، باعث خرابی داده‌ها و اطلاعات آن خواهد شد. همچنین ممکن است، پایگاه‌داده به حالت ناخواسته‌ی Suspect Mode برود، که این حالت بیشتر به دلیل آسیب دیدن fileGroup پایگاه‌داده رخ می‌دهد، درحالت کلی امکان دسترسی و استفاده از پایگاه‌داده در این حالت امکان پذیر نمی‌باشد.

    ترمیم بانک‌اطلاعاتی MSSQL Server 2008 R2

    در این شرایط، می‌توان از امکان Emergency Database Repair (ترمیم اورژانسی پایگاه‌داده) که از نسخه ۲۰۰۵ به بعد به مجموعه‌ی MSSQL Server افزوده شده است، استفاده نمود. برای این منظور بایست یک Log file جدید ایجاد، سپس دستور DBCC CHECKDB را با استفاده از REPAIR_ALLOW_DATA_LOSS اجرا نمود.

    DBCC  دستوراتی برای کنترل و اطمینان از یکپارچگی و پیوستگی منطقی و فیزیکی پایگاه‌داده‌ هستند که عبارتند از:

    • DBCC DBREINDEX برای Defrag کردن جداول و ایندکسها.
    • DBCC SHRINKFILE برای احیاء فضاهای از دست رفته.
    • DBCC SHOWCONTIG برای اینکه آگاهی از وضعیت پیوستگی و ساختار داخلی دیتابیس.
    • DBCC CHECKDB برای رفع اشکالات احتمالی در ساختار داخلی دیتابیس.

    پس از اتمام اجرای دستور DBCC CHECKDB، بایست پیام ذخیره شده در SQL Server error log را بررسی نمایید، چنانچه متن پیغام حاوی کلمه‌ی «success» و زمان صرف شده‌ی اجرای دستور(ها) باشد، بدین معناست که دستورات به درستی و با موفقیت اجرا شده‌است، در غیر اینصورت شما عبارت «command was terminated»، شماره وضعیت (state value) و زمان صرف شده تا رخ دادن خطا را مشاهده خواهید کرد. در زیر می‌توانید جدول شماره وضعیت و توضیح آنرا مشاهده کنید:

    شماره وضعیت

    توضیحات

    ۰

    خطای شماره ۸۹۳۰ رخ داده، بدین معنا که خرابی metadata باعث توقف اجرای دستور DBCC شده‌است.

    ۱

    خطای شماره ۸۹۶۷ رخ داده، بدین معنا که یک خطای داخلی در DBCC رخ داده‌است.

    ۲

    یک خطا در هنگام ترمیم اورژانسی  رخ داده‌است.

    ۳

    خرابی metadata باعث توقف اجرای دستور DBCC شده‌است.

    ۴

    یک ادعای یا نقص دسترسی تشخیص داده‌ شده‌است.

    ۵

    خطای شناخته‌ای باعث توقف اجرای دستور DBCC شده‌است.

    قابلیت ترمیم اورژانسی پایگاه‌داده بایست چند گام را طی کرد:

    1.   باید flag مربوط به حالت suspect پایگاه‌داده را reset (صفر) کنید (چنانچه پایگاه‌داده وارد این حالت شده‌باشد اجرای این گام ضروریست).
    2. مُد EMERGENCY Mode پایگاه‌داده را فعال نموده تا تنها قابلیت خواندن از آن وجود داشته باشد و دیگر کاربران به آن دسترسی نداشته‌باشند.
    3. با استفاده از دستور dbcc checkdb کلیه‌ی allocation ،structural ،logical integrity و خطاهای آبجکت‌های پایگاه‌داده را بررسی کنید.
    4. سپس حالت Single User پایگاه‌داده را فعال کرده، تا امکان recover کردن داده‌های آسیب دیده را داشته‌باشید.
    5. دستور DBCC را همراه با پارامتر  “REPAIR_ALLOW_DATA_LOSS”  اجرا کرده برای بررسی و ترمیم (Repair) خطاهایی که این دستور پیدا خواهد کرد.
    6. در پایان دیتابیس را به حالت Multi User (حالت پیش‌فرض) باز می‌گردانیم.

    به کمک دستورات زیر می‌توانید گام‌های بالا را طی نمایید:

    • ابتدا یک new query ایجاد نمایید.
    • سپس دستورات زیر را در آن کپی نمایید.
    • هرجا عبارت DBName وجود دارد، آن‌را به نام پایگاه‌داده خود تغییر دهید.
    • Query را اجرا نمایید.

    0

    برچسب ها :

با عضویت در خبرنامه شما را از آخرین تجربیات مان و مطالب تخصصی آگاه خواهیم کرد.

یک پاسخ به “ترمیم پایگاه‌داده MSSQL Server 2008 R2”

  1. امید گفت:

    با سلام و خسته نباشید
    مطلب خیلی جالب و پر باری بود.همیشه در مورد پایگاه داده ها سوال داشتم که با این مطلب شما، به جواب یکسری سوالاتم رسیدم

    0

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *