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

无法通过SSMS访问Blazor应用创建的(localdb)\mssqllocaldb数据库

解决Blazor独立账户LocalDB无法通过SSMS访问的问题

问题概述

创建采用「独立账户」认证类型的Blazor应用后,应用自动生成本地SQL Server数据库,appsettings.json中的连接字符串可正常工作,能完成注册、登录及数据持久化。但安装SSMS后,尝试以(localdb)\mssqllocaldb为服务器名连接时失败,错误提示「指定的LocalDB实例名称无效」,且修改实例名会导致Blazor应用崩溃。

完整错误日志:

===================================

无法连接到 (localdb)\\mssqllocaldb。

===================================

建立与SQL Server的连接时出现与网络相关的或特定实例的错误。找不到服务器或无法访问服务器。请验证实例名称是否正确,并且SQL Server已配置为允许远程连接。(provider: SQL Network Interfaces, error: 50 - 发生Local Database Runtime错误。指定的LocalDB实例名称无效。
) (Framework Microsoft SqlClient Data Provider)

------------------------------
错误编号: -1983577829
严重性: 20
状态: 0


------------------------------
程序位置:

   at Microsoft.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at Microsoft.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   at Microsoft.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, Boolean withFailover, Boolean isFirstTransparentAttempt, SqlAuthenticationMethod authType, String certificate, ServerCertificateValidationCallback serverCallback, ClientCertificateRetrievalCallback clientCallback, Boolean useOriginalAddressInfo, Boolean disableTnir)
   at Microsoft.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover, Boolean isFirstTransparentAttempt, Boolean disableTnir)
   at Microsoft.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, SqlCredential credential, TimeoutTimer timeout)
   at Microsoft.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, SqlCredential credential, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance)
   at Microsoft.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, ServerCertificateValidationCallback serverCallback, ClientCertificateRetrievalCallback clientCallback, DbConnectionPool pool, String accessToken, SqlClientOriginalNetworkAddressInfo originalNetworkAddressInfo, Boolean applyTransientFaultHandling)
   at Microsoft.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
   at Microsoft.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions)
   at Microsoft.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
   at Microsoft.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
   at Microsoft.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
   at Microsoft.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry)
   at Microsoft.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry, SqlConnectionOverrides overrides)
   at Microsoft.Data.SqlClient.SqlConnection.Open(SqlConnectionOverrides overrides)
   at Microsoft.Data.SqlClient.SqlConnection.Open()
   at Microsoft.SqlServer.Management.SqlStudio.Explorer.ObjectExplorerService.ValidateConnection(UIConnectionInfo ci, IServerType server)
   at Microsoft.SqlServer.Management.UI.ConnectionDlg.Connector.ConnectionThreadUser()

解决方案

1. 确认LocalDB实例的实际名称

Blazor应用使用的LocalDB实例可能不是默认的mssqllocaldb,或存在大小写匹配问题:

  • 打开命令提示符(CMD)或PowerShell,执行命令:
    sqllocaldb info
    
    该命令会列出当前所有存在的LocalDB实例名称。
  • 匹配Blazor连接字符串中的实例名,通常名称类似MSSQLLocalDB(注意大小写)。

2. 使用正确实例名连接SSMS

  • 在SSMS连接窗口中,将服务器名改为(localdb)\实例名称(实例名称需与sqllocaldb info输出完全匹配,包括大小写)。
  • 如果实例未启动,先执行启动命令:
    sqllocaldb start 实例名称
    
    再尝试连接。

3. 核对Blazor连接字符串细节

打开appsettings.json,查看ConnectionStrings中的DataSource字段,例如:

"ConnectionStrings": {
  "DefaultConnection": "Server=(localdb)\\MSSQLLocalDB;Database=BlazorAppAuth;Trusted_Connection=True;MultipleActiveResultSets=true"
}

确保SSMS中使用的实例名与这里的DataSource完全一致(注意JSON中是双反斜杠,SSMS输入时只需单反斜杠)。

4. 修复损坏的LocalDB实例

若实例存在损坏,可删除后重新创建:

  • 停止实例:
    sqllocaldb stop MSSQLLocalDB
    
  • 删除实例:
    sqllocaldb delete MSSQLLocalDB
    
  • 重新创建并启动:
    sqllocaldb create MSSQLLocalDB
    sqllocaldb start MSSQLLocalDB
    

重新运行Blazor应用,它会自动初始化数据库,之后再尝试SSMS连接。

关键提示

  • LocalDB实例名称区分大小写,SSMS输入必须与实际名称完全匹配。
  • Blazor运行时会自动启动所需实例,但SSMS不会,未运行的实例需手动启动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 06:07:06