我试图做实体框架的代码第一次演练( 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" />
我写了一个简单的连接测试,如下面,代码返回相同的SQL连接错误((provider:命名管道提供程序,error:40 - 无法打开到SQL Server)的连接)。
new System.Data.SqlClient.SqlConnection("Data Source=(LocalDB)\v11.0; Integrated Security=True; MultipleActiveResultSets=True").Open();
我试着更换"Data Source=..."
与"Server=..."
,但无济于事那里。
任何想法连接字符串应该是什么?
1)需要更新,以至少4.0.2 .NET框架4。 如果你有4.0.2,那么你应该有
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319\SKUs\.NETFramework,Version=v4.0.2
如果您已经安装了最新的VS 2012有机会,你已经有4.0.2。 只是第一次确认。
2)其次,你需要有一个实例LocalDb
。 默认情况下,你有一个实例,其名称是一个v
字随后在格式xx.x.中的LocalDB发行版本号 例如, v11.0
代表SQL Server 2012的自动实例默认都是公有的。 您也可以命名实例这是私人的 。 命名实例从其他实例提供隔离,并可以通过减少资源竞争与其他数据库用户提高性能。 您可以检查使用实例的状态SqlLocalDb.exe
实用程序(从命令行运行它)。
3)然后在连接字符串应该是这样的:
"Server=(localdb)\\v11.0;Integrated Security=true;"
要么
"Data Source=(localdb)\\test;Integrated Security=true;"
从您的代码 。 他们都是一样的。 注意两个\\
必需的,因为\v
和\t
表示特殊字符。 还要注意的是后会出现什么(localdb)\\
是你的LocalDB实例的名称。 v11.0
是默认的公共实例, test
是我手动创建这是私人的。
如果你有一个数据库(.mdf文件)已经:
"Server=(localdb)\\Test;Integrated Security=true;AttachDbFileName= myDbFile;"
如果你没有一个SQL Server数据库:
"Server=(localdb)\\v11.0;Integrated Security=true;"
你可以通过编程创建自己的数据库:
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 Server建立连接时出现与网络相关的或特定于实例的错误
我通过控制台检查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已安装并正常运行。 那么是什么,我不能这个ConnectionString中通过Net代码连接到SqlLocalDB的原因: Server=(LocalDB)\v11.0;Integrated Security=true;
?
然后,我意识到,我的应用程序被编译为DOTNET的框架3.5,但SqlLocalDb仅适用于DOTNET的4.0。
纠正在此之后,问题得到解决。
这是一个相当古老的线程,但因为我是今天重装2015年社区我的Visual Studio中,我想我可能会添加什么到VS2015使用,或者什么可能在一般的工作,一些信息。
要查看默认情况下,键入安装了哪些情况下sqllocaldb info
命令提示符中。 在我的机器,我得到两个实例,第一个命名的MSSQLLocalDB
。
C:\>sqllocaldb info
MSSQLLocalDB
ProjectsV13
您还可以创建,如果你想一个新的实例,使用sqllocaldb create "some_instance_name"
,但是默认的一个会工作得很好:
// if not using a verbatim string literal, don't forget to escape backslashes
@"Server=(localdb)\MSSQLLocalDB;Integrated Security=true;"
我有同样的问题了一下。 我注意到,我有:
Data Source= (localdb)\v11.0"
只需添加一个反斜杠它解决了这个问题对我来说:
Data Source= (localdb)\\v11.0"
在SQL Server 2008 R2数据库文件,您可以用连接
Server=np:\\.\pipe\YourInstance\tsql\query;InitialCatalog=yourDataBase;Trusted_Connection=True;
只是,但在SQL Server 2012中您可以使用此:
服务器=(的LocalDB)\ 11.0;集成安全性= TRUE;数据库= DB1;
它取决于你的.mdf
.ldf
版本。
寻找programmicaly我用这个方法,在这个解释后
您需要安装点网4.0.2或以上提到这里 。
4.0位不明白通过的LocalDB所需的语法
在这里看到这个问题
您可以下载中心更新这里
这是别人谁也一直在努力像我得到这个工作....我浪费了一半以上,每天在看似琐碎的事情...
如果你想从VS2010使用SQL Express 2012的LocalDB您必须安装这个补丁http://www.microsoft.com/en-us/download/details.aspx?id=27756
就像在上面的评论我也曾经有过Microsoft .NET Framework版本4.0.30319 SP1Rel并提到因为它的无处不提到,你需要“框架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是必需的。