You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

控制台应用连接MSSQL报错4060:登录失败无法打开数据库

问题:控制台应用连接MSSQL失败,报错无法打开数据库&登录失败

我正在开发一个控制台应用,用于将某张表的行值重置为0。使用MSSMS可通过正确的用户账号连接MSSQL并执行查询,无任何问题。但运行以下代码时出现错误:

using Microsoft.Data.SqlClient;

//string connectionString = "Server = (localdb)\\MSSQLLocalDBNAMEB; Database = D; Trusted_Connection = True;";

string connectionString = "server=SERVER;database=DB;UID=USER;password=PASSWORD";

using (var cnn = new SqlConnection(connectionString))
{
    cnn.Open();

    var query = @"UPDATE CurrentMenus SET Ate_today = 0";

    var cmd = new SqlCommand(query, cnn);
    cmd.ExecuteNonQuery();

    cnn.Close();

}

错误信息如下:

Unhandled exception. Microsoft.Data.SqlClient.SqlException
(0x80131904): Cannot open database "DB" requested by the
login. The login failed. Login failed for user 'USER'. at
Microsoft.Data.SqlClient.SqlInternalConnection.OnError(SqlException
exception, Boolean breakConnection, Action1 wrapCloseInAction) at Microsoft.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at Microsoft.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) at Microsoft.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource1
retry, SqlConnectionOverrides overrides) at
Microsoft.Data.SqlClient.SqlConnection.Open(SqlConnectionOverrides
overrides) at Microsoft.Data.SqlClient.SqlConnection.Open() at
Program.$(String[] args) in
C:\Users\mshapkaroski\Desktop\C#\Reset

Meals\ResetMeals\ResetMeals\Program.cs:line 9

ClientConnectionId:4923a01c-7fe4-4b23-b2eb-68d8b341d975 Error
Number:4060,State:1,Class:11

我尝试使用本地连接字符串也无法解决问题:

//string connectionString = "Server = (localdb)\\MSSQLLocalDBNAMEB; Database = D; Trusted_Connection = True;"

请问问题可能出在哪里?


可能的原因及解决方法
  • 连接字符串参数错误

    • 核对SERVER、DB、USER、PASSWORD是否和MSSMS中使用的完全一致,注意特殊场景下的大小写(比如数据库开启大小写敏感配置)
    • 如果是远程服务器,确认实例名是否正确:若为命名实例,连接字符串需写成SERVER\INSTANCE_NAME,默认实例可只写SERVER
    • 若密码包含特殊字符(如;、"),需用双引号包裹连接字符串或对特殊字符转义
  • SQL Server账号权限配置问题

    • 确认USER账号拥有目标DB数据库的访问权限,且具备CurrentMenus表的UPDATE权限。注意MSSMS可能使用Windows认证登录,而代码使用SQL Server认证,两者权限可能不同
    • 检查该登录账号是否已映射到DB数据库的用户,并分配了合适的角色(如db_datawriter)
  • LocalDB相关配置问题(针对本地连接尝试)

    • 确认LocalDB实例名正确:打开命令行执行sqllocaldb info查看已存在的实例,默认实例为MSSQLLocalDB,你写的MSSQLLocalDBNAMEB可能不存在
    • 验证D数据库在LocalDB实例中存在,且当前Windows账号(因使用Trusted_Connection=True)有权限访问该数据库
    • 确保LocalDB实例处于运行状态:执行sqllocaldb start 实例名启动目标实例
  • 其他排查点

    • 远程服务器防火墙:确认服务器防火墙允许客户端IP访问SQL Server默认端口(1433)
    • SQL Server服务状态:远程服务器需确保SQL Server服务已启动;LocalDB实例可通过上述sqllocaldb start命令启动

内容的提问来源于stack exchange,提问作者Maria

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 13:10:30