Connection to SQL server suddenly stopped working

0

I had it working before. Only change I did is exporting database by generating script and importing it in server.

Web server: IIS / ASP.NET web app
Connection string:

  <add key="ConnectionString" value="Data Source=SERVER; 
Initial Catalog=tkl;Persist Security Info=True;
User ID=tkl;Password=PASS; Connection Lifetime=150; 
Connect Timeout=150; Pooling=true;Min Pool Size=20;Max Pool Size=500" />

Error:

  2020-09-27 05:23:44.6361|ERROR|System.Data.SqlClient.SqlException (0x80131904): 
Cannot open database "tkl" requested by the login. The login failed.
    Login failed for user 'tkl'.
       at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, DbConnectionPool pool, String accessToken, Boolean applyTransientFaultHandling, SqlAuthenticationProviderManager sqlAuthProviderManager)

User 'tkl' exists in both TKL database and on SQL Server . I am not sure what is wrong here. probably I need to set some permissions. Any help is appreciated.

Update:

SQL Log:

Login failed for user 'tkl'. Reason: Failed to open the explicitly specified database 'tkl'. [CLIENT: ]

Both windows and SQL authentificaiton are enabled. I can try to post 'tkl' user object permissions as well.

sql
sql-server
iis
connection-string
asked on Stack Overflow Sep 27, 2020 by Jalle • edited Sep 27, 2020 by Larnu

1 Answer

0

The Error is telling you that the LOGIN does not have access to the database you are trying to connect to. Just because a database has a USER with the same name as the name of a LOGIN on the server, does not mean that that LOGIN has access to the database.

USER objects are mapped to LOGIN objects via the SID, not the name. This means you could have 2 objects, with the different names mapped to each other, and 2 objects with the same name not mapped to each other.

Most likely, here, you just need to ALTER the USER to correct the mapping:

USE YourDatabase;
GO

ALTER USER tkl WITH LOGIN = tkl;
answered on Stack Overflow Sep 27, 2020 by Larnu

User contributions licensed under CC BY-SA 3.0