如何修复 MSSQLLocalDB?

Posted

技术标签:

【中文标题】如何修复 MSSQLLocalDB?【英文标题】:How to fix MSSQLLocalDB? 【发布时间】:2015-11-09 05:26:20 【问题描述】:

在我的机器上 MSSQLLocalDB 已损坏:

    PS C:\WINDOWS\system32> sqllocaldb i
    MSSQLLocalDB
    Projects
    ProjectsV12
    v11.0
    PS C:\WINDOWS\system32> sqllocaldb i mssqllocaldb
    The required LocalDB version "0.0" is not installed.
    PS C:\WINDOWS\system32>

除了重新安装 Visual Studio / Sql Server / Sql Express 来修复它,我还能做些什么吗?

我应该提一下,任何依赖于 LocalDb 的 Visual Studio 功能都因此而无法工作,例如 CodeMaps

【问题讨论】:

【参考方案1】:

如果您刚刚安装 LocalDB 并且尚未启动实例,则可能会发生这种情况。我不确定重新启动是否会为我重新启动它(我想它会重新启动),但以下工作不需要:

C:\Users\sweaver>sqllocaldb.exe s MSSQLLocalDB
LocalDB instance "MSSQLLocalDB" started.

这应该是您所需要的 - 但这是我在此过程中使用的完整诊断步骤。


这是在安装新版本的 LocalDB (2014) 之前

C:\Users\sweaver>sqllocaldb.exe i
v11.0

之后

C:\Users\sweaver>sqllocaldb.exe i
MSSQLLocalDB
v11.0

然后我立即收到此错误

C:\Users\sweaver>sqllocaldb.exe i MSSQLLocalDB
The required LocalDB version "0.0" is not installed.

奇怪!版本 11 怎么样 - 没关系

C:\Users\sweaver>sqllocaldb.exe i v11.0
Name:               v11.0
Version:            11.0.5343.0
Shared name:
Owner:              RR2014\sweaver
Auto-create:        Yes
State:              Running
Last start time:    3/10/2016 3:00:29 PM
Instance pipe name: np:\\.\pipe\LOCALDB#60C1AC49\tsql\query

这是版本

C:\Users\sweaver>sqllocaldb.exe v
Microsoft SQL Server 2012 (11.0.5343.0)
Microsoft SQL Server 2014 (12.0.2000.8)

让我们尝试启动它

C:\Users\sweaver>sqllocaldb.exe s MSSQLLocalDB
LocalDB instance "MSSQLLocalDB" started.

然后再试一次...

C:\Users\sweaver>sqllocaldb.exe i MSSQLLocalDB
Name:               MSSQLLocalDB
Version:            12.0.2000.8
Shared name:
Owner:              RR2014\sweaver
Auto-create:        Yes
State:              Running
Last start time:    3/10/2016 3:10:55 PM
Instance pipe name: np:\\.\pipe\LOCALDB#1D3F49F3\tsql\query

呸!这很容易!

【讨论】:

【参考方案2】:

我最终做的事情如下。请注意,我确信这不是正确的方法,而是一种混乱的黑客行为。不过,它让我的 CodeMaps 再次工作,所以我很高兴。

我删除了mssqllocaldb

sqllocaldb d mssqllocaldb

系统不让我重新创建,所以我创建了另一个:

sqllocaldb с mssqllocaldb1

我去了"C:\Users\[username]\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\"并备份了MSSQLLocalDB文件夹。然后我将MSSQLLocalDB1 文件夹复制到MSSQLLocalDB

在注册表中,我在HKCU\Software\Microsoft\Microsoft SQL Server\UserInstances\ 下找到了新实例,并更改了DataDirectory 值以反映新路径,即以MSSQLLocalDB 结尾而不是MSSQLLocalDB1

之后我能够成功启动MSSQLLocalDB 并且 CodeMaps 工作:

PS C:\WINDOWS\system32> sqllocaldb s mssqllocaldb

LocalDB 实例“MSSQLLocalDB”已启动。

【讨论】:

【参考方案3】:

我通过删除文件夹和注册密钥解决了这个问题。然后是安装。

删除文件夹

C:\Users\用户名\AppData\Local\Microsoft\Microsoft SQL Server 本地 DB\Instances\MSSQLLocalDB

删除具有 MSSQLLocalDB 之类的注册表项 HKEY_CURRENT_USER\SOFTWARE\Microsoft\Microsoft SQL Server\UserInstancesB0A12082-AC5B-4E05-A0C9-ABFB6816EE16

从 cmd 运行

C:>sqllocaldb c MSSQLLocalDB

使用版本 13.0.2151.0 创建的 LocalDB 实例“MSSQLLocalDB”。

【讨论】:

【参考方案4】:

我刚刚将HKEY_CURRENT_USER\Software\Microsoft\Microsoft SQL Server\UserInstances\ 下的注册表项GUID 更新为ParentInstance 的正确值,这对我有用。通常,当您升级到更高版本时会发生这种情况。我必须将 ParentInstance 值从 MSSQL12E.LOCALDB 更改为 MSSQL13E.LOCALDB

【讨论】:

以上是关于如何修复 MSSQLLocalDB?的主要内容,如果未能解决你的问题,请参考以下文章

服务列表中MSSQLLocalDB 2016的名称是什么

LocalDB SQL Server 2014 Express 创建 2 个实例 (localdb)\ProjectsV12 & (localdb)\MSSQLLocalDB?

LocalDB SQL Server 2014 Express 创建 2 个实例 (localdb)\ProjectsV12 & (localdb)\MSSQLLocalDB?

MSSQLLocalDB 微软本地数据库,pk SQLlite

Update-Database - (localdb) MSSQLLocalDB出错

如何在 OData 请求中添加 Context Guid