我对如何从SQL Server 2014 Management Studio连接到LocalDb感到困惑。 (我也在localhost上安装了SQL标准版。)
我的ASP.NET应用程序中有这样的连接:
<add name="DefaultConnection"
connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\BillTest.mdf;Initial Catalog=BillTest;Integrated Security=True"
providerName="System.Data.SqlClient" />
当我进入SSMS 2014并连接到(LocalDb)\v11.0
时,我可以连接,我看到像aspnet-BillTest-2015mmddhhmmss
这样的数据库,但我无法打开它。我收到一个错误,例如“数据库......无法访问。”
当我连接到(LocalDb)\mssqllocaldb
时,我可以连接,我看到像BillContext
这样的数据库,并且有我的表格。我确认这是应用程序连接到的那个,通过插入新行并看到它们显示在我的应用程序中。
您能否解释连接字符串中的差异:
(LocalDb)\mssqllocaldb
时,我的ASP.NET应用程序如何使用(LocalDb)\v11.0
? \v11.0
上的实际内容是什么?(LocalDb)\mssqllocaldb
指向既不是11.0也不是我的SQL Server 2014安装的SQL版本(12.0.2000)(localhost = 12.0.4100.1)?答案 0 :(得分:1)
由于LocalDB服务器版本和SSMS版本。直到Visual Studio 2013,您应该使用特定于版本的连接字符串(例如,从Visual Studio 2015开始的(LocalDb \ v11.0),您应该使用版本无关的连接字符串(LocalDB \ MSSQLDB)才能正常工作。请检查此链接供参考。
Version independent local DB in Visual Studio 2015 - Bill Wagner
答案 1 :(得分:0)
为什么(LocalDb)\ v11.0可以在我的ASP.NET应用程序中运行,但不能在SSMS中运行?
听起来(LocalDb)\v11.0
可以从您描述的内容中访问,只是数据库本身无法访问。我检查文件是否仍然存在或是否有其他东西锁定了文件。
为什么(LocalDb)\ mssqllocaldb指向既不是11.0也不是我的SQL Server 2014安装版本(12.0.2000)(localhost = 12.0.4100.1)?
程序集版本和文件版本不同。请参阅this answer
为什么数据库名称&#34; BillContext&#34;而不是&#34; BillTest&#34;?
您可能没有为EF上下文提供连接名称(例如new BillContext("DefaultConnection")
),因此它会回退到默认值,这是一个以您的上下文命名的LocalDb数据库。