2017-06-04 30 views
0

我使用Microsoft使用的ASP.NET示例应用程序:WingtipToys。Connnection字符串ASP.NET中的LocalDB WebForms Visual Studio

它使用LocalDB

连接字符串的区别是什么?

<add name="DefaultConnection" connectionString="Data Source=(LocalDB)\V11.0;Initial Catalog=aspnet-WingtipToys;Integrated Security=True" providerName="System.Data.SqlClient" />

<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-WingtipToys-20131223105750.mdf;Initial Catalog=aspnet-WingtipToys-20131223105750;Integrated Security=True" providerName="System.Data.SqlClient" />

我得到使用数据源=(的LocalDB)\ V11.0错误连接;初始目录= ASPNET-WingtipToys;集成安全性=真

sqlocaldb。 EXE命令:

C:\Users\Espinete>sqllocaldb.exe v 
Microsoft SQL Server 2012 (11.0.3156.0) 
Microsoft SQL Server 2014 (12.0.2000.8) 
Microsoft SQL Server 2016 Release Candidate 0 (RC0) (13.0.1100.286) 

C:\Users\Espinete>sqllocaldb.exe i 
MSSQLLocalDB 
Projects 
ProjectsV13 
v11.0 

回答

0

首先的LocalDB连接字符串通常有数据库文件使用唯一编号后缀这种格式命名约定:

aspnet-[project name]-yyyyMMddHHmmss.mdf 

的唯一编号的后缀代表数据库的创建日期&时间戳在几乎相同的时间,项目的创建时间。

默认情况下,创建未在任何SQL Server实例中定义的LocalDB数据库文件时,web.config中的连接字符串使用AttachDBFileName设置。之间,如Common Connection String Settings描述AttachDBFileName & Initial Catalog设置也是有差别的:

AttachDbFileName

此设置指定没有定义为SQL 服务器Express或的LocalDB数据库的数据库文件的路径和名称在本地 SQL Server Express实例中。此设置通常用于保存在App_Data文件夹中的数据库文件。

初始目录

此设置指定在SQL Server实例 目录数据库的名称。在LocalDB连接字符串中,Visual Studio Web项目模板将一个唯一编号作为后缀添加到文件名和Initial Catalog设置中。原因是为了避免SQL Server Express LocalDB实例中的数据库名称冲突。

从上面的描述来看,第一个连接字符串肯定不起作用,因为LocalDB不知道哪个数据库文件应该附加到它的实例中。要使用Initial Catalog而不使用AttachDBFileName设置,需要将创建的LocalDB数据库附加到SQL Server实例中(使用SSMS或sqlcmd命令行实用程序创建数据库目录)。第一和第二连接串之间

差异总结:

  1. Initial Catalog而不AttachDBFileName =>尝试使用在SQL Server实例目录中定义的已附加的数据库名称来连接。
  2. Initial CatalogAttachDBFileName =>试图附加手动&使用数据库文件MDF内App_Data目录中LocalDB实例与Initial Catalog设定为附加的数据库文件名进行连接。

NB:sqllocaldb.exe v命令列出所有已安装的LocalDB版本在你的机器,其中sqllocaldb.exe i列出了所有共享现有的LocalDB实例(详细信息在SqlLocalDB.exe docs)。

附加参考:

SqlConnection.ConnectionString Property(MSDN)

相关问题