与SQL Server的连接突然停止工作

时间:2020-09-27 09:32:56

标签: sql sql-server iis connection-string

我以前有工作过。我所做的唯一更改是通过生成脚本并将其导入服务器来导出数据库。

Web服务器:IIS / ASP.NET Web应用程序
连接字符串:

  <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" />

错误:

  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)

用户'tkl'在TKL数据库和SQL Server中都存在。 我不确定这里出什么问题了。可能我需要设置一些权限。 感谢您的帮助。

更新

SQL日志:

用户'tkl'登录失败。原因:无法打开显式指定的数据库“ tkl”。 [客户:]

同时启用了Windows和SQL身份验证。 我也可以尝试发布“ tkl”用户对象权限。

1 个答案:

答案 0 :(得分:0)

该错误告诉您LOGIN无权访问您尝试连接的数据库。仅仅因为数据库中的USER与服务器上的LOGIN的名称相同,并不意味着LOGIN可以访问数据库。

USER对象通过SID(名称不是不是)映射到LOGIN对象。这意味着您可能有2个对象,它们的名称相互映射,并且2个对象的名称同为 not 映射。

在这里,您很可能只需要ALTER USER来更正映射:

USE YourDatabase;
GO

ALTER USER tkl WITH LOGIN = tkl;