什么是的LocalDB的连接字符串版本11什么是的LocalDB的连接字符串版本11(What is

2019-05-14 00:31发布

我试图做实体框架的代码第一次演练( 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=..." ,但无济于事那里。

任何想法连接字符串应该是什么?

Answer 1:

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是我手动创建这是私人的。

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

     "Server=(localdb)\\Test;Integrated Security=true;AttachDbFileName= myDbFile;" 
  2. 如果你没有一个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实用工具,它是可悲的..

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



Answer 2:

我安装的是提到的.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。

纠正在此之后,问题得到解决。



Answer 3:

这是一个相当古老的线程,但因为我是今天重装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;"


Answer 4:

我有同样的问题了一下。 我注意到,我有:

Data Source= (localdb)\v11.0"

只需添加一个反斜杠它解决了这个问题对我来说:

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


Answer 5:

在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我用这个方法,在这个解释后



Answer 6:

您需要安装点网4.0.2或以上提到这里 。
4.0位不明白通过的LocalDB所需的语法

在这里看到这个问题

您可以下载中心更新这里



Answer 7:

这是别人谁也一直在努力像我得到这个工作....我浪费了一半以上,每天在看似琐碎的事情...

如果你想从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补丁,并安装它,我得到它的工作....



Answer 8:

我有连接字符串Server=(localdb)\v11.0;Integrated Security=true;Database=DB1;

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

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



文章来源: What is the connection string for localdb for version 11