使用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