خطای Cannot open user default database
بسم الله الرحمن الرحیم
برطرف کردن خطای Cannot open user default database
هر User در SQL Server یک Database Default دارد، شما می توانید Database پیش فرض یک User را از طریق بخش Security زیر منو Logins برای User خود مشخص کنید. در تصویر زیر ما بر روی کاربر Sa دابل کلیک کرده ایم.
همانطور که در تصویر بالا مشاهده می کنید، در اینجا پایگاه داده پیش فرض کاربر ما Master می باشد.
اگر شما به هر دلیلی پایگاه داده پیش فرض یک User را حذف کنید، خطای زیر اتفاق خواهد افتاد.
حال اگر شما تنها یک کاربر برای SQL Server خود داشته باشید و پایگاه داده پیش فرض این کاربر را حذف کنید، طبیعتا دیگر نمی توانید به Instance مربوطه Login کنید.
در این شرایط راه حل اول نصب یک Instance جدید برای SQL Server است، در این شرایط طبیعتا دیگر به سایر دیتابیس های Instance قبلی دسترسی نخواهید داشت!
راه حل دوم تغییر پایگاه داده پبش فرض یک User توسط SQL Command می باشد.
تغییر default database با SQL Command
ویژگی تغییر پایگاه داده پیش فرض از SQL Server 2005 به SQL CMD اضافه شده است، که شما می توانید به صورت زیر از این ویژگی استفاده کنید.
از ابزار sqlcmd برای تغییر default database استفاده کنید . برای استفاده از این ابزار می بایست قدم های زیر را طی کنید :
بر روی بخش استارت ویندوز ، گزینه RUN را انتخاب کنید. در این قسمت کلمه CMD را تایپ کنید و دکمه Enter را فشار دهید.
بر اساس نوع authentication موجود در SQL Server یکی از دو روش زیر را انتخاب کنید:
روش اول) اگر برای اتصال از Microsoft Windows authentication استفاده می شود ، کد زیر را در command prompt تایپ کرده و دکمه Enter را بزنید.
sqlcmd –E -S InstanceName –d master
مثال
sqlcmd –E -S DESKTOP-22GF8SF\SQL2014 –d AblyDB
روش دوم) اگر برای اتصال از SQL Server authentication استفاده می شود (بدین معنا که هنگام Login در SQL Server نام کاربری و کلمه عبور وارد می کنید)، کد زیر را در command prompt تایپ کرده و دکمه Enter را بزنید.
sqlcmd -S InstanceName -d master -U SQLLogin -P Password
مثال
sqlcmd -S DESKTOP-22GF8SF\SQL2014 -d AblyDB -U Esmaeil -P 123456
به جای کلمه InstanceName می بایست نام SQL Server خود را وارد کنید و به جای SQLLogin می بایست نام کاربری را بنویسید که دیتابیس پیش فرض آن Drop شده است و در نهایت به جای Password کلمه عبور خود را وارد نمایید.
با توجه به یکی از دو روش بالا شما توانسته اید به Instance مربوطه خود متصل شده و وارد sqlcmd prompt شوید.
حال کد زیر را تایپ کرده و Enter را فشار دهید.
ALTER LOGIN SQLLogin WITH DEFAULT_DATABASE = AvailDBName
توجه داشته باشید که به جای AvailDBName باید نام یک دیتابیس موجود در SQL instance خود را وارد کنید.
مثال
ALTER LOGIN Esmaeil WITH DEFAULT_DATABASE = AblyDB
در مرحله آخر در sqlcmd prompt کلمه GO را تایپ کرده و Enter را بزنید.
حال می توانید مجددا به SQL Server خود متصل شوید.