0

在我的开发 PC (Windows 10) 上,我安装了 SQL Server Express 2016,包括安装了 LocalDB。

我的 Windows 窗体应用程序正在使用 System.Data.SqlClient 连接到 .MDF 数据库。当 .MDF 数据库是版本 12 (Sql Server 2014) 时,可以建立连接。但是,如果它是版本 13(Sql Server 2016),那么我会收到一条错误消息,指出服务器实例是版本 12,并且无法打开。

连接字符串是:

"Data Source=(LocalDB)\\MSSQLLocalDB; AttachDbFilename = " + startup_dir +
"\\TAS_Dbase\\Archers1.mdf; Integrated Security = True";

我相信 MSSQLLocalDB 是 SQL Server 的“默认”实例,显然是版本 12(SQL Server 2014)。我需要使用默认实例,但需要版本 13。

问题:如何将 MSSQLLocalDB 更改为版本 13?

我已经阅读了不同的线程来执行以下操作 -

cd "C:\Program Files\Microsoft SQL Server\130\LocalDB\Binn"
SqlLocalDB.exe delete "MSSQLLocalDB"
SqlLocalDB.exe create "MSSQLLocalDB"

我不想在没有先与这里的人核实的情况下这样做。

更新 6/29——我尝试使用如上所示的 SqlLocalDB 命令行实用程序,但只得到显示的错误。

cd "C:\Program Files\Microsoft SQL Server\130\LocalDB\Binn"
SqlLocalDB.exe delete "MSSQLLocalDB"

FormatMessageW 失败。返回的错误代码:15100

cd "C:\Program Files\Microsoft SQL Server\130\LocalDB\Binn"
SqlLocalDB.exe create "MSSQLLocalDB"

FormatMessageW 失败。返回的错误代码:15100

我该如何解决?

4

2 回答 2

0

我进入“程序和功能”并选择了 Sql Server 2016 LocalDB 并进行了“修复”。这似乎已经解决了它。希望我明白为什么。

于 2020-07-01T13:05:21.230 回答
0

最好的选择是从 Microsoft 下载并安装 localdb 2017(版本 13)并将其安装在您的系统上。允许多个 localdb 版本共存,可以同时运行。

无需更改您的默认值mssqllocaldb

安装后,只需通过运行以下 PowerShell 命令创建您选择的新 localdb 实例名称。例如,如果您正在创建myinstance实例名称:

sqllocaldb.exe "myinstance" 13.0 -s

在您的代码中,mssqllocaldb将连接字符串中的实例名称替换为:

"Data Source=(LocalDB)\myinstance; AttachDbFilename = " + startup_dir + "\TAS_Dbase\Archers1.mdf; Integrated Security = True";

当我的数据库在我不知情的情况下更新到更高版本时,我通过这种方式解决了我的问题,同时在 Visual Studio 2019 中处理 VB.NET 项目。

于 2020-09-05T16:33:18.283 回答