版本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的私有的。
-
如果您有一个数据库(.mdf文件):
"Server=(localdb)\\Test;Integrated Security=true;AttachDbFileName= myDbFile;"
-
如果您没有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是必需的。