版本 11 的 localdb 的连接字符串是什么

本文关键字:字符串 是什么 连接 localdb 版本 | 更新日期: 2023-09-27 18:33:52

我正在尝试执行实体框架的代码优先演练(http://blogs.msdn.com/b/adonet/archive/2011/09/28/ef-4-2-code-first-walkthrough.aspx(。

我有最新的SQL Server Express,当我通过命令行检查我的版本时(sqllocaldb信息(:我看到localdbApp1和v11.0。 当我尝试通过一些小的调整运行演练时,出现无法连接错误。

我的应用程序配置如下所示:

<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=..."但无济于事。

知道连接字符串应该是什么吗?

版本 11 的 localdb 的连接字符串是什么

  1. 需要将 .NET 框架 4 更新到至少 4.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。只需先验证即可。

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

  2. 接下来,连接字符串应如下所示:

    "Server=(localdb(''v11.0;Integrated Security=true;"或

    "数据源=(localdb(''test;集成安全性=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实用程序,这很可悲。

这是一个相当古老的线程,但是由于我今天重新安装了Visual Studio 2015社区,我想我可能会添加一些关于在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;"

我安装了提到的.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 已安装并正常运行。那么我无法通过带有此连接字符串的 .Net 代码连接到 SqlLocalDB 的原因是什么: Server=(LocalDB)'v11.0;Integrated Security=true;

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

纠正此问题后,问题就解决了。

我有同样的问题。我注意到我有:

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 中,您可以使用以下内容:

Server=(localdb(''v11.0;Integrated Security=true;Database=DB1;

这取决于您的.mdf .ldf版本。

为了以编程方式查找,我使用本文中解释的此方法

您需要安装Dot Net 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 是必需的。