ترمیم پایگاه‌داده MSSQL Server 2008 R2

1 دیدگاه
دسته بندی: آموزش
ترمیم نمودن دیتابیس sql server 2008 R2

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

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

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

در این شرایط، می‌توان از امکان Emergency Database Repair (ترمیم اورژانسی پایگاه‌داده) که از نسخه 2005 به بعد به مجموعه‌ی 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) و زمان صرف شده تا رخ دادن خطا را مشاهده خواهید کرد. در زیر می‌توانید جدول شماره وضعیت و توضیح آنرا مشاهده کنید:

شماره وضعیت

توضیحات

0

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

1

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

2

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

3

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

4

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

5

خطای شناخته‌ای باعث توقف اجرای دستور 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 را اجرا نمایید.
 EXEC sp_resetstatus 'DBName'
ALTER DATABASE DBName SET EMERGENCY
DBCC CheckDB (' DBName')
ALTER DATABASE DBName SET SINGLE_USER WITH ROLLBACK IMMEDIATE
DBCC CheckDB (' DBName ', REPAIR_ALLOW_DATA_LOSS)
ALTER DATABASE DBName SET MULTI_USER
امتیاز شما

مایلید هر دو هفته یک ایمیل مفید دریافت کنید؟

ما را در شبکه‌های اجتماعی دنبال کنید

همچنین شاید دوست داشته باشید!

نصب وردپرس روی پلسک

نصب وردپرس روی پلسک

0
  زمانی که صحبت از کنترل پنل‌های هاستینگ وب می‌شود، ابزار پلسک (Plesk) یکی از بهترین گزینه‌ها برای کسب‌وکارهای کوچک و بزرگ به حساب می‌آید.…
بلاک کردن آی پی در htaccess

آموزش بلاک کردن آی پی در فایل htaccess

0
بلاک کردن آی پی در فایل htaccess، درِ ورود سایتتان را روی مهمانان پردردسرِ ناخوانده‌ می‌بندد. اگر می‌خواهید کنترل ترافیک ورودی به سایتتان را به…

نظرات کاربران

1 دیدگاه. دیدگاه تازه ای بنویسید

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

    پاسخ

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.

این فیلد را پر کنید
این فیلد را پر کنید
لطفاً یک نشانی ایمیل معتبر بنویسید.
شما برای ادامه باید با شرایط موافقت کنید

فهرست