【问题标题】:Connect to LocalDB (Visual Studio 2013) from SSMS 2014从 SSMS 2014 连接到 LocalDB (Visual Studio 2013)
【发布时间】:2015-07-24 18:05:01
【问题描述】:

我对如何从 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 这样的数据库并且有我的表。我通过插入新行并看到它们显示在我的应用中验证了这是应用所连接的那个。

你能解释一下连接字符串的差异吗:

  • 当 Web.config 中的连接字符串为 (LocalDb)\v11.0 时,我的 ASP.NET 应用程序如何使用 (LocalDb)\mssqllocaldb\v11.0 上的实际内容是什么?
  • 为什么(LocalDb)\mssqllocaldb 指向既不是 11.0 也不是我的 SQL Server 2014 安装 (localhost = 12.0.4100.1) 的 SQL 版本 (12.0.2000)?
  • 为什么数据库名称是“BillContext”而不是“BillTest”?

【问题讨论】:

    标签: asp.net sql-server visual-studio localdb


    【解决方案1】:

    这是因为 LocalDB 服务器版本和 SSMS 版本。在 Visual Studio 2013 之前,您应该使用从 Visual Studio 2015 开始的特定于版本的连接字符串(例如(LocalDb\v11.0),您应该使用与版本无关的连接字符串(LocalDB\MSSQLDB)才能正常工作。检查此链接供参考。

    Version independent local DB in Visual Studio 2015 - Bill Wagner

    【讨论】:

      【解决方案2】:
      1. 为什么 (LocalDb)\v11.0 可以在我的 ASP.NET 应用程序中工作,但不能在 SSMS 中工作?

        听起来(LocalDb)\v11.0 可以从您所描述的两者中访问,只是数据库本身无法访问。我会检查该文件是否仍然存在,或者是否有其他东西锁定了该文件。

      2. 为什么 (LocalDb)\mssqllocaldb 指向的版本 (12.0.2000) 既不是 11.0 也不是我的 SQL Server 2014 安装 (localhost = 12.0.4100.1)?

        程序集版本和文件版本不同。见this answer

      3. 为什么数据库名称是“BillContext”而不是“BillTest”?

        您可能没有为 EF 上下文提供连接名称(例如 new BillContext("DefaultConnection")),因此它会回退到默认值,即以您的上下文命名的 LocalDb 数据库。

      【讨论】:

      • #3- 谢谢,这就解释了为什么LocalDb\mssqllocaldb 上有一个名为 BillContext 的数据库。以及为什么它被称为 BillContext。我仍然不明白单独的 v11.0 连接字符串以及 aspnet-BillTest-timestamp DB 的全部内容。
      • aspnet-BillTest-2015mmddhhmmss 看起来像从模板创建 Web 项目时使用的默认数据库名称。对应的.mdf文件还存在还是被删除了?
      • 是的,App_Data 中有一个名为 BillContext.mdf 的文件。我明白为什么我在LocalDb\mssqllocaldb 下有一个BillContext DB,但不完全确定 aspnet-BillTest-.. 的用途或为什么无法访问。
      • @wrschneider:我实际上是在问aspnet-BillTest-2015mmddhhmmss 的文件是否仍然存在,因为文件可能被删除但数据库仍会在 SSMS 中列出,如果文件消失了,在detaching it 之外,您对数据库无能为力。听起来可能是在第一次创建项目时创建了数据库,后来删除了文件。
      • 啊,可能是这样。我正在处理连接字符串,这可能是在我做对之前发生的事情。这也可以解释 v11.0 / mssqllocal 的差异。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-24
      • 2016-01-02
      • 2015-01-13
      • 1970-01-01
      • 2021-10-25
      • 1970-01-01
      • 2015-05-03
      相关资源
      最近更新 更多