In the security panel, click the option under Server authentication for SQL Server and Windows Authentication mode. Click OK to save the settings and close the Properties dialog box. Add a new SQL login by expanding the Security folder and clicking the Logins folder. Right-click the Logins folder and click New Login.
If you are receiving the error message “Cannot open database. It may not be a database that your application recognizes, or the file may be corrupt.”, check if the database has reached or exceeded the 2 GB limit. If so, running MS Access built-in 'compact and repair' utility may help.
Fix/Workaround/Solution:In newly opened screen of Login Properties, go to the “User Mapping” tab. Then, on the “User Mapping” tab, select the desired database – especially the database for which this error message is displayed. On the lower screen, check the role db_owner. Click OK.
Well, the error is pretty clear, no? You are trying to connect to your SQL Server with user "xyz/ASPNET" - that's the account your ASP.NET app is running under.
This account is not allowed to connect to SQL Server - either create a login on SQL Server for that account, or then specify another valid SQL Server account in your connection string.
Can you show us your connection string (by updating your original question)?
UPDATE: Ok, you're using integrated Windows authentication --> you need to create a SQL Server login for "xyz\ASPNET" on your SQL Server - or change your connection string to something like:
connectionString="Server=.\SQLExpress;Database=IFItest;User ID=xyz;pwd=top$secret"
If you have a user "xyz" with a password of "top$secret" in your database.
I'd go for the 2nd option: the error message implies the default database is either not there or no rights in it, rather than not set up as a login.
To test if it's set up as a login
SELECT SUSER_ID('xyz\ASPNET') -- (**not** SUSER_SID)
If NULL
CREATE LOGIN [xyz\ASPNET] FROM WINDOWS
If not NULL
USE test
GO
SELECT USER_ID('xyz\ASPNET')
If NULL
USE test
GO
CREATE USER [xyz\ASPNET] FROM LOGIN [xyz\ASPNET]
I had this problem and what solved it for me was to:
For me the database was not created and EF code first should have created it but always endet in this error. The same connection string was working in aspnet core default web project. The solution was to add
_dbContext.Database.EnsureCreated()
before the first database contact (before DB seeding).
The best solution for the login problem is to create a login user in sqlServer. Here are the steps to create a SQL Server login that uses Windows Authentication (SQL Server Management Studio):
For example, if the user name is xyz\ASPNET
, then enter this name into Login name Box.
Also you need to change the User mapping to allow access to the Database which you want to access.
Most times, it's not a login issue, but an issue with creating the database itself. So if there is an error creating your database, it would not be created in the first place. In which case if you tried to log in, regardless of the user, login would fail. This usually happens due to logical misinterpretation of the db context.
Visit the site in a browser and REALLY read those error logs, this can help you spot the problem with you code (usually conflicting logic problems with the model).
In my case, the code compiled fine, same login problem, while I was still downloading management studio, I went through the error log, fixed my db context constraints and site started running fine....meanwhile management studio is still downloading
The error presents itself as a message similar to this:
Cannot open database "DATABASE NAME" requested by the login. The login failed. Login failed for user XYZ.
The solution is laid in the following steps. You will not lose any data in your database and you should not delete your database file!
Pre-requisite: You must have installed SQL Server Management Studio (Full or Express)
The source of the solution: https://www.codeproject.com/Tips/775607/How-to-fix-LocalDB-Requested-Login-failed
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With