localdb for version 11的连接字符串是什么

Bil*_*sen 62 c# sql-server connection-string sql-server-2012 localdb

我正在尝试实体框架的Code First演练(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" />
Run Code Online (Sandbox Code Playgroud)

我写了一个简单的连接测试,如下所示,代码返回相同的SQL连接错误((提供者:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接)).

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

我试着更换"Data Source=...""Server=...",但无济于事那里.

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

naw*_*fal 96

1)要求.NET框架4更新到至少4.0.2.如果你有4.0.2,那么你应该有

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319\SKUs\.NETFramework,Version=v4.0.2
Run Code Online (Sandbox Code Playgroud)

如果你已经安装了最新的VS 2012,那么你已经有了4.0.2.先验证一下.

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

3)接下来你的连接字符串应如下所示:

"Server=(localdb)\\v11.0;Integrated Security=true;"
Run Code Online (Sandbox Code Playgroud)

要么

"Data Source=(localdb)\\test;Integrated Security=true;"
Run Code Online (Sandbox Code Playgroud)

从你的代码.它们都是一样的.注意两个\\必需的因为\v并且\t意味着特殊字符.另请注意,之后出现的(localdb)\\是LocalDb实例的名称.v11.0是默认的公共实例,test是我手动创建的私有实例.

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

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

    "Server=(localdb)\\v11.0;Integrated Security=true;"
    
    Run Code Online (Sandbox Code Playgroud)

您可以通过编程方式创建自己的数据库:

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

var query = "CREATE DATABASE myDbName;";
Run Code Online (Sandbox Code Playgroud)

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%)" +
    ";";
Run Code Online (Sandbox Code Playgroud)

并执行!

可以使用以下内容将示例表加载到数据库中:

 @"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');";
Run Code Online (Sandbox Code Playgroud)

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

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


小智 17

我安装了上面提到的.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
Run Code Online (Sandbox Code Playgroud)

这意味着SqlLocalDb已正确安装并运行.那么我无法通过此连接字符串通过.Net代码连接到SqlLocalDB的原因是什么Server=(LocalDB)\v11.0;Integrated Security=true;

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

纠正之后,问题就解决了.


Gro*_*roo 15

这是一个相当老的线程,但是自从我今天重新安装我的Visual Studio 2015社区以来,我想我可能会添加一些关于在VS2015上使用什么的信息,或者一般可能有用的信息.

要查看默认安装的实例,请sqllocaldb info在命令提示符下键入.在我的机器上,我得到两个实例,第一个命名MSSQLLocalDB.

C:\>sqllocaldb info
MSSQLLocalDB
ProjectsV13
Run Code Online (Sandbox Code Playgroud)

如果您愿意,也可以使用创建新实例sqllocaldb create "some_instance_name",但默认设置可以正常工作:

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


Spi*_*tBH 9

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

Data Source= (localdb)\v11.0"
Run Code Online (Sandbox Code Playgroud)

只需添加一个反斜杠,它就解决了我的问题:

Data Source= (localdb)\\v11.0"
Run Code Online (Sandbox Code Playgroud)


Ste*_*eve 1

您需要按照此处所述安装 Dot Net 4.0.2 或更高版本。
4.0 位不理解 LocalDB 所需的语法

在这里查看这个问题

您可以在此处下载更新