笔记本SQL Servers下重复LocalDB实例及发布异常问题咨询
LocalDB重复实例、发布后数据库不显示问题解决方案

故障产生原因
- 本地SQL Server工具(Visual Studio、SSMS)的服务器枚举缓存损坏:反复安装不同版本LocalDB、切换EF/Dapper等ORM的数据库提供程序时,缓存会重复写入同个实例的多条注册记录,下拉列表就会出现重复项
- LocalDB元数据残留:之前重装LocalDB、手动创建/删除同名实例时,注册表和用户配置目录下残留了失效的实例条目;ProjectModels节点下的第3个重复项是EF设计时工具自动生成的临时实例注册,调试结束后未被正常清理
- 实例映射错位:重复条目中的失效项指向已经销毁的LocalDB命名管道,选择这类条目发布数据库时,操作实际被路由到不存在的临时实例,执行完成后数据库自然不会出现在你预期的实例中
多余重复实例清理步骤
- 关闭所有运行中的Visual Studio、SSMS、以及所有连接LocalDB的程序,以管理员身份打开PowerShell,执行以下命令停止所有运行中的LocalDB实例:
sqllocaldb stop all - 执行命令列出当前所有注册的LocalDB实例:
sqllocaldb i
对列表中状态异常、名称重复的非默认实例,执行sqllocaldb delete <异常实例名>删除;如果默认实例MSSQLLocalDB状态异常,直接执行以下命令重建默认实例:
sqllocaldb delete MSSQLLocalDB sqllocaldb create MSSQLLocalDB
- 清理服务器列表缓存:
- 打开资源管理器,地址栏输入
%APPDATA%\Microsoft\VisualStudio,找到你当前使用的VS版本对应的文件夹(比如VS2022对应17.0_Config),进入其中的SqlDB子目录,删除所有.xml后缀的服务器列表缓存文件 - 如果你装了SSMS,地址栏输入
%APPDATA%\Microsoft\SQL Server Management Studio,找到对应SSMS版本目录下的UserSettings\SqlServerList文件夹,同样删除其中所有.xml缓存文件
- 打开资源管理器,地址栏输入
- 清理EF生成的临时实例残留:打开你练习用的项目根目录,删除隐藏的
.vs文件夹,再删除项目下的bin、obj文件夹,这部分存储的ProjectModels节点临时实例数据会被一并清除
唯一可用LocalDB实例配置方法
- 执行命令启动重建好的默认实例,验证状态正常:
sqllocaldb start MSSQLLocalDB sqllocaldb info MSSQLLocalDB
返回状态为running、能看到正常的实例管道地址即为正常
- 重新打开VS/SSMS,不要从下拉列表选择旧的实例条目,手动在连接输入框填入
(LocalDB)\MSSQLLocalDB连接实例,测试新建一个空库,确认库能正常显示在对象资源管理器中 - 所有练习项目的EF/Dapper连接字符串统一使用固定实例地址,不要让ORM工具自动枚举实例,参考连接字符串格式:
Server=(LocalDB)\MSSQLLocalDB;Database=你的练习库名;Trusted_Connection=True;MultipleActiveResultSets=true - 后续执行数据库发布操作时,手动选择上述固定连接,不要选择下拉列表自动枚举的其他条目,就不会再出现重复实例、发布错位的问题
内容的提问来源于stack exchange,提问作者ACDev
相关产品推荐
相关产品推荐

