مشکل دیتابیس MSDB
بررسی خطای Database ‘msdb’ cannot be opened. It has been marked SUSPECT by recovery. See the SQL Server errorlog for more information. (Microsoft SQL Server, Error: 926)
در این مواقع 2 حالت پیش خواهد آمد داشتن بکاپ از دیتابیس MSDB که حالت ایده آل این شرایط است و حالت دوم نداشتن بکاپ است ، ابتدا عدم وجود بکاپ را بررسی میکنیم .
در فروم های اینترنتی و بسیاری از پیشنهادات کاربران این سایت ها مشاهده شده که روش زیر را پیشنهاد می دهند :
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
خب این روش بسیار خطرناک ولی راحت برای دیتابیس هایی می باشد که به مد Suspect رفته است ولی این روش برای دیتابیس های سیستمی مثل MSDB عمل نخواهد کرد چون دیتابیس MSDB را نمی توان به مد اورژانسی منتقل کرد ، ولی برای دیتابیس های عادی این روش پر مخاطره به راحتی عمل خواهد کرد ، در ابتدا دیتابیس به حالت EMERGENCY رفته بعد از آن با دستور DBCC میزان خرابی را بررسی کرده و دیتابیس با حالت تک کاربره رفته و با پارامتر REPARE ALLOW DATA LOST دیتابیس شروع به بازسازی کرده ولی دیتای تخریب شده به کلی از بین رفته و پاک می شود .
روش دیگری که برای حالت نداشتن بکاپ می توان استفاده کرد روش زیر است:
در ابتدا می بایست تمامی سرویس های متصل به این Instance را Stop کرد سپس CMD را باز کرده و دو دستور زیر را وارد کنید :
cd “C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Binn”
این مسیر محل نصب sql شما می باشد که باید دقت کنید همان مسیر را این این دستور وارد کنید و سپس دستور زیر را وارد کنید :
start sqlservr.exe -c -m -T3608
با استفاده از این دستورات اس کیو ال سرو در یک حالت بسیار محدودی راه اندازی شده و می توان دیتابیس را Detach کرده ، پارامتر 3608 مجوز این موضوع را می دهد.
وارد SSMS شوید و پنجره لاگین را ببندید و New Query را بزنید و بعد از ظاهر شدن پنجره Connect to server و در تب Connection Properties در قسمت connect to database نام دیتابیس Master را وارد کنید و کانکت شوید . سپس دستور زیر را اجرا کنید :
sp_detach_db ‘msdb’
اگر پیغام خطا مشاهده کردید تمامی مراحل را به دقت دوباره اجرا کنید .
در صورت Detach شدن موفق این دیتابیس به مسیر نصب که در بالا اشاره شد مراجه کرده و فایل های ldf و mdf را تغییر نام دهید و محتوای فایل instmsdb.sql که در مسیر زیر است را به پنجره ی کوئری بالا که دستورات را اجرا می کردید منتقل کنید و کلید F5 را بزنید و بعد از مدت کوتاهی دیتابیس MSDB بازسازی می شود . اکنون می توانید سرور را ریست کرده و یا سرویس ها را استارت کنید .
حالت دوم وجود آخرین بکاپ دیتابیس MSDB است : در صورت وجود بکاپ از دیتابیس MSDB می توان مراحل بالا را تا مرحله تغییر نام پیش رفته و فایل های بکاپ را بر روی سرور دیگری Restore کرده و Detach کنید سپس فایل ها را جایگزین فایل های دیتابیس کنونی کنید ، و حالا می توانید سرویس های sql را استارت کرده و آبجکت های موجود را تست کنید .
خطای “Database ‘msdb’ cannot be opened” معمولاً به مشکلاتی مربوط است که با دیتابیس MSDB در SQL Server مرتبط هستند. در ادامه چند راهنمایی برای حل این مشکل آورده شده است:
1. بررسی وضعیت دیتابیس MSDB: ابتدا باید وضعیت دیتابیس MSDB را بررسی کنید. از SQL Server Management Studio (SSMS)، به قسمت Object Explorer بروید و در بخش Databases دیتابیس MSDB را پیدا کنید. سپس با راست کلیک بر روی آن، گزینه Properties را انتخاب کنید. در صفحه Properties، بخش Status را بررسی کنید و مطمئن شوید که دیتابیس در حالت ONLINE است.
2. بررسی دسترسیهای فایل دیتابیس: ممکن است دسترسیهای فایلهای دیتابیس MSDB تغییر کرده باشد یا مجوزهای لازم برای SQL Server بر روی آنها تنظیم نشده باشد. بررسی کنید که حساب خدمت SQL Server (معمولاً حساب NT Service\MSSQLSERVER) دسترسی کامل به فایلهای دیتابیس MSDB دارد.
3. بازسازی دیتابیس MSDB: اگر مشکلی با فایلهای دیتابیس MSDB وجود دارد، میتوانید دیتابیس MSDB را بازسازی کنید. این عملیات با استفاده از ابزار SQL Server Configuration Manager انجام میشود. به SQL Server Configuration Manager رفته و سرویس SQL Server را متوقف کنید. سپس فایلهای دیتابیس MSDB را از مسیر مشخص شده (معمولاً در مسیر C:\Program Files\Microsoft SQL Server\MSSQL[نسخه SQL Server شما]\MSSQL\DATA) پاک کنید. سپس سرویس SQL Server را مجدداً راهاندازی کنید تا دیتابیس MSDB بازسازی شود.
4. بازیابی از نسخه پشتیبان: در صورتی که دیتابیس MSDB بازیابی نشد، میتوانید از یک نسخه پشتیبان ق
بلی از دیتابیس MSDB استفاده کنید. اگر نسخه پشتیبان برای دیتابیس MSDB وجود دارد، آن را استور مجدد کنید تا دیتابیس به حالت قبلی برگردد.
5. مشاوره با تیم پشتیبانی: در صورتی که مشکل هنوز برطرف نشده است، بهتر است با تیم پشتیبانی SQL Server یا متخصصان مرتبط تماس بگیرید. آنها میتوانند مشکل را بررسی کرده و راهحل مناسب را ارائه دهند.
توجه داشته باشید که قبل از انجام هر تغییری در دیتابیس MSDB، تهیه نسخه پشتیبان از آن بسیار مهم است تا در صورت بروز مشکلات بیشتر، امکان بازگردانی دیتابیس را داشته باشید.
دیدگاه ها 1