我无法让Sql Server localdb连接在没有安装SqlServer Express的计算机上工作

时间:2015-01-07 18:33:33

标签: c# sql-server visual-studio-2012 localdb sql-server-2014-express

我有一个使用Visual Studio 2012编写的C#控制台应用程序。在应用程序中,我使用Sql Server 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:\用户\ SomeUser是否\桌面\调试和GT; Testing_Console   
11:21:07,912 [1] INFO TestingConsole.Program - 当前目录为C:\ Users \ someuser \ Desktop \ Debug   
额外信息:(null)   

  
未处理的异常:System.Data.SqlClient.SqlException:建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供程序:SQL网络接口,错误:50 - 发生本地数据库运行时错误。无法创建自动实例。请参阅Windows应用程序事件日志以获取错误详细信息。

以下是我的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有关。谁能告诉我我的问题可能是什么?

5 个答案:

答案 0 :(得分:29)

问题与安装Sql Server Express LocalDB 2014而不是2012版有关。使用该版本,MS已更改连接字符串要求。连接字符串不是Data Source=(LocalDB)\V11.0,而是Data Source=(LocalDB)\MSSQLLocalDB。更改连接字符串后,程序在仅安装了LocalDB 2014的计算机上正常运行。以下是有关该文章的链接: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

答案 1 :(得分:7)

使用&#34;数据源=(LocalDB)\ MSSQLLocalDB&#34;也没有形成我的形象。我不得不访问数据库使用&#34;数据源=(LocalDB)\ V12.0&#34;为了工作,我需要首先运行这个命令&sq; sqllocaldb create&#34; v12.0&#34;。有关此链接的更多详细信息https://dyball.wordpress.com/2014/04/28/sql-2014-localdb-error-cannot-connect-to-locaidbv12-o/

答案 2 :(得分:3)

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

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

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

答案 3 :(得分:2)

具有(LocalDB)\v11.0连接字符串的构建将与此链接Download SqlLocalDB上提供的localDB ENU\x64\SqlLocalDB.MSI一起使用

我在未安装Visual Studio的目标系统上尝试过此操作。此版本将与仅安装SqlLocalDB.msi的数据库连接。无需在目标系统上安装SqlExpress

答案 4 :(得分:0)

问题是,当您同时拥有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)Microsoft Corporation     Windows NT 6.2(内部版本9200 :)上的Express Edition(64位)

Visual Studio 2017-(localdb)\ MSSQLLOCALDB Microsoft SQL Server 2016(SP1)(KB3182545)-13.0.4001.0(X64)     2016年10月28日18:17:30     版权所有(c)Microsoft Corporation     Windows 10 Pro 6.3(Build 17134:)上的Express Edition(64位)

在安装Visual Studio 2017之前,我可以连接到(localdb)\ v11.0 ,但是在安装Visual Studio 2017之后,我不能连接到早期版本的SQL Express (localdb)\ v11.0 ,但是我可以使用C#连接到(localdb)\ MSSQLLOCALDB 。 我可以从SQL Server Management Studio连接到它们两者而没有任何问题。