我使用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" />
我使用Data Source =(LocalDB)\ V11.0得到错误连接;初始目录= aspnet-WingtipToys;集成安全性= True
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
首先,LocalDB连接字符串通常具有数据库文件命名约定,使用此格式的唯一数字后缀:
aspnet-[project name]-yyyyMMddHHmmss.mdf
唯一编号后缀表示与项目创建时间几乎同时的数据库创建日期和时间戳。
默认情况下,在创建未在任何SQL Server实例中定义的LocalDB数据库文件时,web.config中的连接字符串使用AttachDBFileName
设置。 AttachDBFileName
中描述的Initial Catalog
和Common Connection String Settings设置之间的区别在于:
AttachDbFileName
此设置指定未在本地SQL Server Express实例中定义的SQL Server Express或LocalDB数据库的数据库文件的路径和名称。此设置通常用于保存在App_Data文件夹中的数据库文件。
初始目录
此设置指定SQL Server实例目录中的数据库的名称。在LocalDB连接字符串中,Visual Studio Web项目模板将唯一编号作为后缀添加到文件名和初始目录设置中。这样做的原因是为了避免SQL Server Express LocalDB实例中的数据库名称冲突。
从上面的描述中,第一个连接字符串肯定不起作用,因为LocalDB不知道应该将哪个数据库文件附加到其实例中。要在没有Initial Catalog
设置的情况下使用AttachDBFileName
,您需要在SQL Server实例中附加创建的LocalDB数据库(使用SSMS或sqlcmd
命令行实用程序来创建数据库目录)。
第一和第二连接字符串之间的差异摘要:
Initial Catalog
与AttachDBFileName
=>尝试手动连接并使用Initial Catalog
目录中的数据库MDF文件进行连接,并在AttachDBFileName
实例中将App_Data
设置为附加数据库文件名。注意:Initial Catalog
命令列出了机器中所有已安装的LocalDB版本,其中LocalDB
列出了所有共享的现有LocalDB实例(sqllocaldb.exe v
中的更多信息)。
附加参考:
sqllocaldb.exe i
(MSDN)