ممکن است وبسایت یا پروژه خود را به تازگی راه اندازی کردهاید و یا در آن تغییراتی ایجاد شده که پس از انتقال به هاست با خطای زیر مواجه شدهاید:
Microsoft.Data.SqlClient.SqlException (0x80131904): Cannot open database "DBNAME" requested by the login. The login failed.
Login failed for user 'WIN-SERVERID\IWPD_ID(HOSTUSERNAME)'.
دلیل خطا
همانطور که می دانید برای دسترسی به دیتابیسهای MSSQL از دو روش Windows Authentication و SQL Server Authentication استفاده میشود. روش اول بدون نیاز به نام کاربری و رمز عبور از طریق دسترسیهای سطح بالا و روش دوم با استفاده از نام کاربری و رمز عبور دیتابیس انجام میشود. خطای فوق زمانی نمایش داده می شود که شما Connection String را به گونهای تعریف کردهاید که به جای استفاده از نام کاربری و رمز عبور قصد دارد به اشتباه با دسترسی Windows Authentication اقدام به برقراری ارتباط با دیتابیس کند.
نحوه رفع خطا
راهکار ساده است. شما بایستی روش را به SQL Server Authentication تغییر دهید تا با استفاده از نام کاربری و رمز عبور دیتابیس فراخوانی شود.
احتمالا در Connection String مقدار integrated security یا Trusted_Connection برابر True است. برای رفع مشکل بایستی مقدار آن را به false تبدیل کنید.
مثال:
<add name="DBContext" connectionString="Data Source=.\SQLSERVERADDRESS;Initial Catalog=DBNAME;Integrated Security=False;User ID=DBUSER;Password=DBPASSWORD;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />
یا
"ConnectionStrings": {
"DefaultConnection": "Server=.\\SQLSERVERADDRESS;Database=DBNAME; User Id=DBUSER;Password=DBPASSWORD;Integrated Security=False;MultipleActiveResultSets=true"
},
کار تمام شد!