"SqlLocalDB versions" runs into error "Windows API call "RegGetValueW" returned error code: 0."

使用SqlLocalDB Utility查看SqlLocalDB的版本,返回以下错误:

C:\>SqlLocalDB versions
Windows API call "RegGetValueW" returned error code: 0.

 

搜了一下,发现是注册表配置问题(MSDN Community sqlexpress Forums),本机安装的SqlLocalDB在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL13E.LOCALDB\MSSQLServer\CurrentVersion下有个CurrentVersion,其值为13.1.4001.0。

但是在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server Local DB\Installed Versions,下面的文件夹确是“13.0”,修改成"13.1"后问题解决。

C:\>SqlLocalDB versions
Microsoft SQL Server 2016 (13.1.4001.0)

 

虽然到这里问题就已经解决了,但是在查看SQL LocalDB安装目录下的启动程序 (C:\Program Files\Microsoft SQL Server\130\LocalDB\Binn\sqlservr.exe) 以后,我又困惑了。右键, 发现属性\详细信息里的版本号正是13.0.4001.0,也就是说上面的注册表部分的原始值是正确的。那么问题出在哪里呢?

详细检查注册表并相应修改验证后发现,SQLLocalDB命令行工具 (C:\Program Files\Microsoft SQL Server\130\Tools\Binn\SqlLocalDB.exe) 使用的注册表项在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL13E.LOCALDB 目录下,这个目录下使用的值是13.1.4001.0,不清楚是更新什么还是微软自己的安装程序弄错了,总之就是和实际的值对不上。所以更正确的做法是改正这个目录下的所有的13.1.4001.0,虽然这样做要改的地方更多一些。

C:\>SqlLocalDB versions
Microsoft SQL Server 2016 (13.0.4001.0)

 

更多参考:How to connect and use Microsoft SQL Server Express LocalDB

posted @ 2020-04-01 16:58  天琊蓝  阅读(786)  评论(1编辑  收藏  举报