وقتی در Object Explorer کنار نام یک پایگاهداده عبارت (Recovery Pending) را میبینی، یعنی SQL Server هنوز فرآیند بازیابی (Recovery) آن را شروع نکرده — معمولاً چون در تلاش قبلی برای انجام این کار با مشکلی مواجه شده (مثلاً کمبود فضای دیسک، فایل گمشده، یا خاموششدن ناگهانی سرور). خبر خوب: برخلاف حالت Suspect، حالت Recovery Pending معمولاً به این معنی نیست که داده خراب شده — فقط SQL Server منتظر شرایط لازم برای شروع Recovery است.
اول از همه مطمئن شو درایوی که فایلهای Data و Log رویش قرار دارند، فضای خالی کافی دارد. اگر دیسک پر است، فضای خالی کن (حذف فایلهای غیرضروری، انتقال بکاپهای قدیمی) و دوباره تلاش کن.
مسیر SSMS → Management → SQL Server Logs را باز کن و دنبال خطوطی بگرد که نام پایگاهدادهی موردنظر را دارند؛ معمولاً دلیل دقیق (مثل «Insufficient disk space» یا مسیر فایل گمشده) همانجا ذکر میشود.
SELECT name, state_desc FROM sys.databases WHERE name = N'ShopDB';
اگر state_desc برابر RECOVERY_PENDING بود، ادامهی مراحل زیر را دنبال کن.
بعد از آزادکردن فضای دیسک، سرویس SQL Server را ریاستارت کن. در بسیاری از موارد، SQL Server بهطور خودکار فرآیند Recovery را از سر میگیرد و پایگاهداده به حالت ONLINE برمیگردد.
ALTER DATABASE ShopDB SET ONLINE;
اگر این دستور هم خطا داد و فایل Data یا Log واقعاً از بین رفته یا خراب شده، تنها راه مطمئن، Restore از یک نسخهی پشتیبان معتبر است — به راهنمای رفع خطاهای رایج هنگام Restore کردن Database مراجعه کن.
EMERGENCY MODE یا REPAIR_ALLOW_DATA_LOSS نرو مگر اینکه Backup معتبر نداشته باشی و همهی راههای دیگر را امتحان کرده باشی؛ این دستورها میتوانند داده از دست بدهند.برای جلوگیری از این مشکل در آینده، درس تراکنشها را ببین و مطمئن شو استراتژی Backup منظمی داری.
دورهی رایگان SQLFarsi را همین حالا شروع کن.
شروع یادگیری