در SQL Server بانکهای اطلاعاتی میتوانند وضعیتهای مختلفی داشته باشند ما در این مقاله سعی خواهیم کرد وضعیت بانکهای اطلاعاتی را بررسی کنیم. برای مشاهده وضعیت بانکهای اطلاعاتی میتوانید از روشهای زیر استفاده کنید.
اگر در SSMS کلید F8 را فشار دهید Object Explorer برای شما نمایش داده میشود. شما میتوانید اغلب وضعیتهای مربوط به بانک اطلاعاتی را در آن مشاهده کنید.

با استفاده از کوئری زیر میتوانید وضعیت هر کدام از بانکهای اطلاعاتی موجود در SQL Server را مشاهده کنید. برای بررسی تخصصی پیشنهاد من استفاده از این کوئری است.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

این تابع اطلاعاتی در خصوص برخی ویژگیهای مربوط به بانک اطلاعاتی را بر میگرداند. یکی از این ویژگیها Status است که با استفاده از آن میتوان وضعیت بانک اطلاعاتی را مشاهده کرد.
|
|
|
|
|
|

برای اینکه بتوانید وضعیت بانک اطلاعاتی را در این پنجره مشاهده کنید کافی است در Object Explorer بروی بانک اطلاعاتی کلیک راست کرده و گزینه Properties را کلیک کنید تا پنجره Database Properties همانند تصویر زیر برای شما نمایش داده شود. و اما وضعیتهای مربوط به یک بانک اطلاعاتی به شرح زیر میباشد:

در این وضعیت بانک اطلاعاتی در دسترس بوده و میتواند به کاربران سرویس دهد. تمامی بانکهای اطلاعاتی که در این وضعیت هستند در Object Explorer وضعیت آنها به صورت نرمال میباشد.

چنانچه بخواهید با استفاده از دستورات TSQL وضعیت بانک اطلاعاتی را در حالت Online قرار دهید از دستور زیر استفاده از کنید.
|
|
|
|
|
|
بانک اطلاعاتی در این حالت در وضعیت غیر قابل دسترس است و در دسترس نمیباشد. عموماً از این وضعیت برای موارد زیر استفاده میشود. ۱) جلوگیری از دسترسی تمامی کاربران به بانک اطلاعاتی ۲) انتقال فایلهای بانک اطلاعاتی به یک دیسک ۳) و…

چنانچه یک بانک اطلاعاتی در حالت Offline باشد وضعیت آن در Object Explorer به صورت زیر میباشد. برای قرار دادن وضعیت یک بانک اطلاعاتی در حالت Offline از دستور زیر استفاده کنید.
|
|
|
|
|
|
چنانچه بانک اطلاعاتی در این حالت قرار داشته باشد یک یا چند فایل از فایلهای مربوط به این بانک اطلاعاتی در حال Restoring (بازیابی) قرار دارد. چنانچه بانک اطلاعاتی در حالت Resorting باشد وضعیت آن در Object Explorer به صورت زیر میباشد.

اگر بخواهیم بانک اطلاعاتی که در وضعیت Restoring قرار دارد را Use کرده و مورد استفاده قرار دهیم با خطای زیر مواجه خواهیم شد.
Msg 927, Level 14, State 2, Line 16 Database ‘A_NikAmoozDB2017’ cannot be opened. It is in the middle of a restore.
این وضعیت در حالتهای زیر عموماً به وجود میآید: ۱) Restore کردن یک Backup از بانک اطلاعاتی ۲) استفاده از ویژگی With NoRecovery در دستور Backup معمولاً DBAها زمانی از این ویژگی استفاده میکنند که بخواهند سایر نسخههای پشتیبان را در ادامه فرآیند Restore بازیابی کنند. برای مثال ابتدا Full Backup را با این ویژگی Restore کرده و پس از آن در ادامه یک Differential Backup بازیابی میکنند. توجه داشته باشید اگر فرآیند Restore پایان یافته باشد ما میتوانیم با استفاده از دستور زیر بانک اطلاعاتی را در حالت Online قرار دهیم.
|
|
|
|
|
|
در این وضعیت بانک اطلاعاتی در حالت Recovering (بازیافت) قرار دارد. در صورتی که عملیات بازیافت موفقیت آمیز باشد بانک اطلاعاتی در حالت Online قرار میگیرد و در صورتی که موفقیت آمیز نباشد بانک اطلاعاتی در وضعیت Suspect قرار میگیرد.
چنانچه بانک اطلاعاتی در این حالت قرار گیرد امکان کار با آن وجود نخواهد داشت. در این حالت بانک اطلاعاتی آسیب ندیده ولی فایلهای آن ممکن است از بین رفته باشد و یا محدودیت سیستمی وجود داشته باشد. برای مثال ممکن است Log File مربوط به بانک اطلاعاتی آسیب دیده و یا از بین رفته باشد. چنانچه بانک اطلاعاتی در حالت Recovery Pending قرار گیرد وضعیت آن در Object Explorer به صورت زیر خواهد بود.

چنانچه بانک اطلاعاتی در این حالت قرار گیرد در دسترس نبوده و امکان کار کردن با آن فراهم نمیباشد. عواملی که باعث میشوند بانک اطلاعاتی در این حالت قرار گیرد عبارتند از: ۱) Shutdown کردن سرویس SQL Server به صورت غیر نرمال برای مثال قطع کردن برق سرور و… ۲) خرابی Data File 3) خرابی Log File 4) Corrupt شدن بانک اطلاعاتی ۵) و… چنانچه بانک اطلاعاتی در حالت Suspect قرار گیرد وضعیت آن در Object Explorer به صورت زیر خواهد بود.

در این حالت بانک اطلاعاتی به صورت فقط خواندنی برای گروه SysAdmin در دسترس است. از این وضعیت بیشتر برای عیب یابی بانک اطلاعاتی استفاده میشود. برای مثال زمانی که بانک اطلاعاتی در حالت Suspect قرار داشته باشد میتوانیم بانک اطلاعاتی را در وضعیت Emergency قرار داده و مشکلات مربوط به آن را رفع و رجوع نماییم. برای قرار دادن یک بانک اطلاعاتی در وضعیت Emergency از دستور زیر استفاده کنید.
|
|
|
|
|
|
چنانچه بانک اطلاعاتی در حالت Emergency قرار گیرد وضعیت آن در Object Explorer به صورت زیر خواهد بود.
نکته مهم: چنانچه بانک اطلاعاتی شما در وضعیتی قرار گرفت که در دسترس نمیباشد. برای مدیریت بهتر و دقیق شرایط بهتر است حتماً به SQL Server Logs سر بزنید. برای دسترسی به آن همانند تصویر زیر اقدام کنید.

پس از باز کردن لاگ جاری میتوانید وضعیت آن را در پنجره زیر مشاهده کرده و آن را تحلیل کنید.

دانلود این مقاله