版本11的localdb的连接string是什么?

我正在尝试执行entity framework的代码优先演练( http://blogs.msdn.com/b/adonet/archive/2011/09/28/ef-4-2-code-first-walkthrough.aspx )。

我有最新的SQL Server Express,当我通过命令行( sqllocaldb信息 )检查我的版本时:我看到localdbApp1和v11.0。 当我尝试通过一些小的调整来运行演练时,我得到一个无法连接的错误。

我的app.config如下所示:

<parameter value="Server=(LocalDB)\v11.0; Integrated Security=True; MultipleActiveResultSets=True" /> 

我写了一个简单的连接testing,如下所示,并返回相同的SQL连接错误((提供程序:命名pipe道提供程序,错误:40 – 无法打开连接到SQL Server))。

 new System.Data.SqlClient.SqlConnection("Data Source=(LocalDB)\v11.0; Integrated Security=True; MultipleActiveResultSets=True").Open(); 

我已经尝试用"Data Source=..." "Server=..."replace"Data Source=..." ,但无济于事。

任何想法的连接string应该是什么?

1)需要.NET框架4更新到至less4.0.2。 如果你有4.0.2,那么你应该有

 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319\SKUs\.NETFramework,Version=v4.0.2 

如果你已经安装了最新的VS 2012的机会,你已经有4.0.2。 先validation一下。

2)接下来你需要有一个LocalDb的实例。 默认情况下,您有一个名为单个v字符的实例,后跟LocalDB版本号,格式为xx.x. 例如, v11.0代表SQL Server 2012. 默认情况下,自动实例是公共的。 您也可以拥有私有的命名实例 。 命名实例提供与其他实例的隔离,并通过减less与其他数据库用户的资源争用来提高性能。 您可以使用SqlLocalDb.exe实用程序检查实例的状态(从命令行运行)。

3)接下来你的连接string应该看起来像:

 "Server=(localdb)\\v11.0;Integrated Security=true;" 

要么

 "Data Source=(localdb)\\test;Integrated Security=true;" 

从你的代码 。 他们都是一样的。 注意这两个“ \\必需的,因为\v\t表示特殊字符。 另请注意, (localdb)\\后出现的是您的LocalDb实例的名称。 v11.0是默认的公共实例, test是我手动创build的私有的。

  1. 如果您有一个数据库(.mdf文件):

     "Server=(localdb)\\Test;Integrated Security=true;AttachDbFileName= myDbFile;" 
  2. 如果您没有Sql Server数据库:

     "Server=(localdb)\\v11.0;Integrated Security=true;" 

你可以通过编程创build自己的数据库:

a) 使用默认设置将其保存在默认位置:

 var query = "CREATE DATABASE myDbName;"; 

b) 使用自定义设置将其保存在特定的位置:

 // your db name string dbName = "myDbName"; // path to your db files: // ensure that the directory exists and you have read write permission. string[] files = { Path.Combine(Application.StartupPath, dbName + ".mdf"), Path.Combine(Application.StartupPath, dbName + ".ldf") }; // db creation query: // note that the data file and log file have different logical names var query = "CREATE DATABASE " + dbName + " ON PRIMARY" + " (NAME = " + dbName + "_data," + " FILENAME = '" + files[0] + "'," + " SIZE = 3MB," + " MAXSIZE = 10MB," + " FILEGROWTH = 10%)" + " LOG ON" + " (NAME = " + dbName + "_log," + " FILENAME = '" + files[1] + "'," + " SIZE = 1MB," + " MAXSIZE = 5MB," + " FILEGROWTH = 10%)" + ";"; 

并执行!

一个样本表可以用类似的东西加载到数据库中:

  @"CREATE TABLE supportContacts ( id int identity primary key, type varchar(20), details varchar(30) ); INSERT INTO supportContacts (type, details) VALUES ('Email', 'admin@sqlfiddle.com'), ('Twitter', '@sqlfiddle');"; 

请注意, SqlLocalDb.exe实用程序不会让您访问数据库,您需要单独需要sqlcmd实用程序,这是伤心的..

编辑:移动分号的位置,否则错误会发生,如果代码复制/粘贴

我安装了提到的.NET 4.0.2更新,但我得到了同样的错误信息:

与SQL Serverbuild立连接时发生networking相关或特定于实例的错误

我通过控制台检查了SqlLocalDb,如下所示:

 C:\>sqllocaldb create "Test" LocalDB instance "Test" created with version 11.0. C:\>sqllocaldb start "Test" LocalDB instance "Test" started. C:\>sqllocaldb info "Test" Name: Test Version: 11.0.2100.60 Shared name: Owner: PC\TESTUSER Auto-create: No State: Running Last start time: 05.09.2012 21:14:14 Instance pipe name: np:\\.\pipe\LOCALDB#B8A5271F\tsql\query 

这意味着SqlLocalDb安装并正确运行。 那么是什么原因,我不能连接到SqlLocalDB通过.Net代码与此连接Server=(LocalDB)\v11.0;Integrated Security=true;Server=(LocalDB)\v11.0;Integrated Security=true;

然后我意识到我的应用程序是为DotNet framework 3.5编译的,但SqlLocalDb只适用于DotNet 4.0。

纠正这个问题后,问题就解决了。

我有一点同样的问题。 我注意到我有:

 Data Source= (localdb)\v11.0" 

简单地通过添加一个反斜杠它解决了我的问题:

 Data Source= (localdb)\\v11.0" 

这是一个相当古老的线程,但是因为我今天重新安装了Visual Studio 2015社区,所以我想我可以添加一些关于在VS2015上使用什么的信息,或者一般情况下可以使用什么。

要查看默认安装了哪些实例,请在命令提示符下inputsqllocaldb info 。 在我的机器上,我得到了两个实例,第一个名为MSSQLLocalDB

 C:\>sqllocaldb info MSSQLLocalDB ProjectsV13 

你也可以创build一个新的实例,如果你愿意,使用sqllocaldb create "some_instance_name" ,但默认的工作就好了:

 // if not using a verbatim string literal, don't forget to escape backslashes @"Server=(localdb)\MSSQLLocalDB;Integrated Security=true;" 

在您可以连接的Sql Server 2008 R2数据库文件中

 Server=np:\\.\pipe\YourInstance\tsql\query;InitialCatalog=yourDataBase;Trusted_Connection=True; 

只有,但在SQL Server 2012中,你可以使用这个:

Server =(localdb)\ v11.0; Integrated Security = true; Database = DB1;

它取决于你的.mdf .ldf版本。

为了findprogramme我使用这个方法,在这篇文章中解释

如上所述,您需要安装Dot Net 4.0.2或更高版本。
4.0位不理解LocalDB所需的语法

在这里看到这个问题

您可以在此下载更新

对于那些像我这样挣扎的人来说,这是为了得到这个工作而做的……我浪费了半天时间,看起来很琐碎的事情。

如果您想使用VS2010中的SQL Express 2012 LocalDB,则必须安装此修补程序http://www.microsoft.com/en-us/download/details.aspx?id=27756

就像上面的评论中提到的,我也有微软的.NET Framework版本4.0.30319 SP1Rel,并且自从它提到无处不在,你需要“Framework 4.0.2或以上”,我认为我很好去…

但是,当我明确下载该4.0.2补丁,并安装它,我得到它的工作….

我有连接stringServer=(localdb)\v11.0;Integrated Security=true;Database=DB1;

甚至一个.NET 3.5程序成功连接和执行SQL。

但很多人都说.NET 4.0.2或4.5是必需的。

Interesting Posts