C# 我能';t在未安装SqlServer Express的计算机上,无法获得Sql Server localdb连接

C# 我能';t在未安装SqlServer Express的计算机上,无法获得Sql Server localdb连接,c#,sql-server,visual-studio-2012,localdb,sql-server-2014-express,C#,Sql Server,Visual Studio 2012,Localdb,Sql Server 2014 Express,我有一个使用Visual Studio 2012编写的C#控制台应用程序。在应用程序中,我使用Sql Server localdb连接到数据库来存储信息。这在几台安装了VisualStudio的计算机上运行良好 <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config

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

<?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而不需要安装更大的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\u控制台
11:21:07912[1]信息测试控制台。程序-当前目录为C:\Users\someuser\Desktop\Debug
额外信息:(空)


未处理的异常: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有关。有人能告诉我我的问题可能是什么吗?

问题与安装SQL Server Express LocalDB 2014而不是2012有关。在该版本中,MS更改了连接字符串要求。而不是
数据源=(LocalDB)\V11.0
,连接字符串为
数据源=(LocalDB)\MSSQLLocalDB
。更改我的连接字符串后,该程序在仅安装了LocalDB 2014的计算机上正确运行。以下是有关它的文章链接:


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

系统更新后,您可以从以下位置下载SqlLocalDb安装程序:


使用“数据源=(LocalDB)\MSSQLLocalDB”对我来说也不起作用。我必须使用“数据源=(LocalDB)\V12.0”访问数据库,并且为了工作,我需要先运行这个命令“sqllocaldb创建”V12.0。有关此链接的更多详细信息

具有连接字符串的构建<代码>(LocalDB)\v11.0将与此链接上给出的localDB
ENU\x64\SqlLocalDB.MSI一起使用


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

问题是,如果同时安装了Visual Studio 2013和Visual Studio 2017,则有两个版本已安装的LOCAL数据库的名称

<?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>
Visual Studio 2013-(localdb)\v11.0Microsoft 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)\MSSQLLOCALDBMicrosoft 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,但我能够使用C#连接到(localdb)\MSSQLLOCALDB
我能够从SQL Server Management Studio连接到这两个版本,没有任何问题。

问题的可能重复与安装SQL Server Express LocalDB 2014有关。在该版本中,MS更改了连接字符串要求。连接字符串不是“数据源=(LocalDB)\V11.0”,而是“数据源”=(LocalDB)\MSSQLLocalDB”。更改连接字符串后,该程序在仅安装了LocalDB 2014的计算机上正确运行。以下是一篇关于它的文章的链接:用于代码迁移(更新数据库等)。对于我来说,实例名称(LocalDB)\MSSQLLocalDB无法工作。无论如何,感谢您的尝试:我安装了Microsoft SQL Server 2014,并且安装了“(LocalDB)\MSSQLLocalDB"路径解决了问题。
MSSQLLocalDB
只是一个实例的名称。您可以根据需要创建任意多个实例,并按自己的意愿命名。打开
cmd
并输入
sqllocaldb i
。这将列出可用的实例。在早期版本的LocalDB automatic中,使用:
sqllocaldb c YouNewInstance
创建一个新实例ally在当前版本中创建了一个名为
v11.0
的实例。此默认实例名为
MSSQLSLOCALDB
谢谢!这同样适用于我,但我创建了名为MSSQLSLOCALDB的实例,运行“sqllocaldb create MSSQLSLOCALDB”。如果没有在与SQL server相同的计算机上安装VS,我想默认情况下不会创建它。在我的情况下,这是一个完整的SQL server安装(不是express)