我无法在未安装 SqlServer Express 的计算机上使用 Sql Server localdb 连接

I can't get a Sql Server localdb connection to work on a computer that does not have SqlServer Express installed

我有一个使用 Visual Studio 2012 编写的 C# 控制台应用程序。在该应用程序中,我使用 Sql 服务器 localdb 连接到数据库来存储信息。这在几台计算机上运行良好,所有计算机都安装了 Visual Studio。

我想部署一个只需要安装 Sql Server Express LocalDB 而不是更大的 Sql Server Express 的程序。但是,我的应用程序没有在目标计算机上运行。我已经在目标计算机上安装了 Sql Server Express LocalDB 2014。我可以使用命令行,使用 sqllocaldb 运行命令来验证它是否已安装并正在运行。

C:\Users\someuser\Desktop\Debug>sqllocaldb v
Microsoft SQL Server 2014 (12.0.2000.8)`

但是,当我在同一台目标计算机上运行我的应用程序时,出现以下错误。

C:\Users\someuser\Desktop\Debug>Testing_Console
11:21:07,912 [1] INFO TestingConsole.Program - Current Directory is C:\Users\someuser\Desktop\Debug
Extra Info: (null)


Unhandled Exception: System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 50 - Local Database Runtime error occurred. Cannot create an automatic instance. See the Windows Application event log for error details.

以下是我的 app.config 文件的开头,我在其中定义了连接字符串。我试过将直接文件路径放入 LM 文件,但这并没有解决问题。然而,这是意料之中的,因为该程序可以在安装了 Visual Studio 的计算机上的任何目录中运行。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <connectionStrings>
    <add name="KomoLM_Console.Properties.Settings.LMConnectionString"
      providerName="System.Data.SqlClient"
      connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\LM.mdf;Integrated Security=True;MultipleActiveResultSets=True"
 />
  </connectionStrings>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>

我不知道问题是否与只安装了 SQL Server Express LocalDB 2014 有关。谁能告诉我我的问题可能是什么?

问题与安装 Sql Server Express LocalDB 2014 而不是 2012 有关。对于该版本,MS 更改了连接字符串要求。连接字符串不是 Data Source=(LocalDB)\V11.0,而是 Data Source=(LocalDB)\MSSQLLocalDB。更改我的连接字符串后,该程序在仅安装了 LocalDB 2014 的计算机上正确 运行。这是一篇关于它的文章的 link:https://connect.microsoft.com/SQLServer/feedback/details/845278/sql-server-2014-express-localdb-does-not-create-automatic-instance-v12-0

还有

http://msdn.microsoft.com/en-us/library/hh510202(v=sql.120).aspx

您需要确保已安装 .NET Framework 4.0,同样重要的是,安装 .NET Framework 4.0.2 更新 (KB #2544514)。

一旦您的系统是最新的,您可以从以下网址下载 SqlLocalDb 安装程序:

http://www.microsoft.com/en-us/download/details.aspx?id=29062

使用 "Data Source=(LocalDB)\MSSQLLocalDB" 对我也不起作用。我必须使用 "Data Source=(LocalDB)\V12.0" 访问数据库,为了工作,我需要先 运行 这个命令 "sqllocaldb create "v12.0"。关于这个 link [=10 的更多细节=]

具有 (LocalDB)\v11.0 连接字符串的构建将与在此 link Download SqlLocalDB

上给出的 localDB ENU\x64\SqlLocalDB.MSI 一起使用

我在没有安装 Visual Studio 的目标系统上试过这个。此构建将与仅安装 SqlLocalDB.msi 的数据库连接。无需在目标系统上安装 SqlExpress

问题是当您同时拥有 Visual Studio 2013 和 Visual Studio 2017 时,安装了两个版本的本地数据库。

Visual Studio 2013 - (localdb)\v11.0 Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64) 2012 年 10 月 19 日 13:38:57 版权所有 (c) 微软公司 Windows NT 6.2(内部版本 9200:)

上的快捷版(64 位)

Visual Studio 2017 - (localdb)\MSSQLLOCALDB Microsoft SQL Server 2016 (SP1) (KB3182545) - 13.0。 4001.0 (X64) 2016 年 10 月 28 日 18:17:30 版权所有 (c) 微软公司 Windows 10 Pro 6.3(内部版本 17134:)上的快捷版(64 位)

在安装 Visual Studio 2017 之前,我能够连接到 (localdb)\v11.0,但是在安装 Visual Studio 2017 之后,我无法连接连接到以前版本的 SQL Express (localdb)\v11.0,但我能够连接到 (localdb)\MSSQLLOCALDB 使用 C#。 我可以从 SQL Server Management Studio 毫无问题地连接到它们。