与 SQL 服务器的连接突然停止工作
Connection to SQL server suddenly stopped working
我以前让它工作过。我所做的唯一更改是通过生成脚本并将其导入服务器来导出数据库。
Web 服务器:IIS / ASP.NET 网络应用程序
连接字符串:
<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 服务器上。
我不确定这里出了什么问题。可能我需要设置一些权限。 感谢任何帮助。
更新:
SQL 日志:
Login failed for user 'tkl'. Reason: Failed to open the explicitly specified database 'tkl'. [CLIENT: ]
windows 和 SQL 身份验证都已启用。
我也可以尝试 post 'tkl' 用户对象权限。
错误告诉您 LOGIN
无法访问您尝试连接的数据库。仅仅因为数据库有一个 USER
与服务器上的 LOGIN
同名,并不意味着 LOGIN
可以访问该数据库。
USER
对象通过 SID 映射到 LOGIN
对象, 而不是 名称。这意味着您可以有 2 个对象,不同名称相互映射,2 个具有相同名称 not 的对象相互映射。
很有可能,在这里,您只需要 ALTER
USER
来更正映射:
USE YourDatabase;
GO
ALTER USER tkl WITH LOGIN = tkl;
我以前让它工作过。我所做的唯一更改是通过生成脚本并将其导入服务器来导出数据库。
Web 服务器:IIS / ASP.NET 网络应用程序
连接字符串:
<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 服务器上。 我不确定这里出了什么问题。可能我需要设置一些权限。 感谢任何帮助。
更新:
SQL 日志:
Login failed for user 'tkl'. Reason: Failed to open the explicitly specified database 'tkl'. [CLIENT: ]
windows 和 SQL 身份验证都已启用。 我也可以尝试 post 'tkl' 用户对象权限。
错误告诉您 LOGIN
无法访问您尝试连接的数据库。仅仅因为数据库有一个 USER
与服务器上的 LOGIN
同名,并不意味着 LOGIN
可以访问该数据库。
USER
对象通过 SID 映射到 LOGIN
对象, 而不是 名称。这意味着您可以有 2 个对象,不同名称相互映射,2 个具有相同名称 not 的对象相互映射。
很有可能,在这里,您只需要 ALTER
USER
来更正映射:
USE YourDatabase;
GO
ALTER USER tkl WITH LOGIN = tkl;