版本 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=..."
但无济于事。
知道连接字符串应该是什么吗?
-
需要将 .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。只需先验证即可。
-
接下来,您需要有一个
LocalDb
的实例。默认情况下,您有一个实例,其名称为单个v
字符,后跟 LocalDB 发行版号,格式为 xx.x。例如,v11.0
表示 SQL Server 2012。默认情况下,自动实例是公有的。您还可以拥有私有的命名实例。命名实例提供与其他实例的隔离,并可以通过减少与其他数据库用户的资源争用来提高性能。您可以使用SqlLocalDb.exe
实用程序检查实例的状态(从命令行运行(。 -
接下来,连接字符串应如下所示:
"Server=(localdb(''v11.0;Integrated Security=true;"或
"数据源=(localdb(''test;集成安全性=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
实用程序,这很可悲。
这是一个相当古老的线程,但是由于我今天重新安装了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 是必需的。