我正在尝试执行实体框架的代码优先演练(http://blogs.msdn.com/b/adonet/archive/2011/09/28/ef-4-2-code-first-walkthrough.aspx) .
我有最新的SQL Server Express,当我通过命令行(sqllocaldb info)检查我的版本时:我看到localdbApp1和v11.0 . 当我尝试通过一些小的调整来运行演练时,我得到一个无法连接的错误 .
我的app.config看起来像这样:
<parameter value="Server=(LocalDB)\v11.0; Integrated Security=True; MultipleActiveResultSets=True" />
我写了一个简单的连接测试,如下所示,代码返回相同的SQL连接错误((提供者:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接)) .
new System.Data.SqlClient.SqlConnection("Data Source=(LocalDB)\v11.0; Integrated Security=True; MultipleActiveResultSets=True").Open();
我试过用 "Server=..."
替换 "Data Source=..."
但在那里无济于事 .
任何想法连接字符串应该是什么?
8 回答
1)要求.NET framework 4更新至至少4.0.2 . If you have 4.0.2, then you should have
如果你已经安装了最新的VS 2012,那么你已经有了4.0.2 . 先验证一下 .
2)接下来你需要有一个
LocalDb
的实例 . 默认情况下,您有一个实例,其名称是单个v
字符,后跟Localx版本号,格式为xx.x.例如,v11.0
表示SQL Server 2012. Automatic instances are public by default. You can also have named instances which are private . 命名实例提供与其他实例的隔离,并可通过减少与其他数据库用户的资源争用来提高性能 . You can check the status of instances using the SqlLocalDb.exe utility (run it from command line).3)接下来你的连接字符串应如下所示:
要么
from your code . They both are the same.注意两个
\\
是必需的,因为\v
和\t
表示特殊字符 . 另请注意,(localdb)\\
之后出现的内容是LocalDb实例的名称 .v11.0
是默认的公共实例,test
是我手动创建的私有实例 .您可以通过编程方式创建自己的数据库:
a) to save it in the default location with default setting:
b) To save it in a specific location with your own custom settings:
并执行!
可以使用以下内容将示例表加载到数据库中:
请注意
SqlLocalDb.exe
实用程序不允许您访问数据库,您需要单独使用sqlcmd实用程序,这很难过 .编辑:移动分号的位置否则如果代码被复制/粘贴将发生错误
我安装了上面提到的.Net 4.0.2更新,但是我收到了同样的错误消息:
我通过控制台检查了SqlLocalDb,如下所示:
这意味着SqlLocalDb已正确安装并运行 . 那么我无法通过.Net代码通过此连接字符串连接到SqlLocalDB的原因是什么: Server=(LocalDB)\v11.0;Integrated Security=true; ?
然后我意识到我的应用程序是为DotNet framework 3.5编译的,但SqlLocalDb仅适用于DotNet 4.0 .
纠正之后,问题就解决了 .
这是一个相当老的线程,但是自从我今天重新安装我的Visual Studio 2015社区以来,我想我可能会添加一些关于在VS2015上使用什么的信息,或者一般可能有用的信息 .
要查看默认情况下安装的实例,请在命令提示符下键入
sqllocaldb info
. 在我的机器上,我得到两个实例,第一个名为 MSSQLLocalDB .如果您愿意,也可以使用
sqllocaldb create "some_instance_name"
创建一个新实例,但默认设置可以正常工作:我有一点同样的问题 . 我注意到我有:
只需添加一个反斜杠,它就解决了我的问题:
在Sql Server 2008 R2数据库文件中,您可以连接
只有,但在sql Server 2012中你可以使用这个:
它取决于你的
.mdf
.ldf
版本 .为了找到programmicaly,我使用这个post中解释的方法
您需要按照here安装Dot Net 4.0.2或更高版本 .
4.0位不理解LocalDB所需的语法
See this question here
您可以下载更新here
对于那些本来会像我这样努力工作的人来说......这种看似微不足道的事情让我浪费了半天多的时间......
如果要从VS2010使用SQL Express 2012 LocalDB,则必须安装此修补程序http://www.microsoft.com/en-us/download/details.aspx?id=27756
就像上面的评论中提到的那样,我也有Microsoft .NET Framework版本4.0.30319 SP1Rel,因为它提到你需要“Framework 4.0.2或更高版本”,我觉得我很高兴...
但是,当我明确下载4.0.2补丁并安装它时,我得到了它的工作....
我有连接字符串
Server=(localdb)\v11.0;Integrated Security=true;Database=DB1;
甚至 .NET 3.5 程序也成功连接并执行SQL .
但很多人都说.NET 4.0.2或4.5是必需的 .