ASP.NET WebForms Visual Studio中的连接字符串LocalDB

时间:2017-06-04 15:17:53

标签: asp.net visual-studio-2015 connection-string localdb

我使用Microsoft使用的ASP.NET示例应用程序:WingtipToys。

它使用 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

1 个答案:

答案 0 :(得分:1)

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

aspnet-[project name]-yyyyMMddHHmmss.mdf

唯一编号后缀表示数据库创建日期&amp;时间戳与项目创建时间几乎相同。

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

<强> AttachDbFileName

  

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

初始目录

  

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

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

第一个和第二个连接字符串之间的差异摘要:

  1. Initial Catalog没有AttachDBFileName =&gt;尝试使用SQL Server实例目录中定义的已附加数据库名称进行连接。
  2. Initial Catalog AttachDBFileName =&gt;试图手动附加&amp;使用App_Data目录中的数据库MDF文件进行连接,并将Initial Catalog设置为LocalDB实例中的附加数据库文件名。
  3. NB:sqllocaldb.exe v命令列出计算机中所有已安装的LocalDB版本,其中sqllocaldb.exe i列出所有共享的现有LocalDB实例(SqlLocalDB.exe docs中的更多信息)。

    补充参考:

    SqlConnection.ConnectionString Property(MSDN)