【问题标题】:VS application can't connect to database after attaching it in SSMSVS 应用程序在 SSMS 中附加后无法连接到数据库
【发布时间】:2016-06-15 02:06:11
【问题描述】:

我有一个 Windows 窗体应用程序(在 VS Express 2013 中开发),它通过 SQL Server 2012 实例连接到数据库。应用程序和数据库都在我的本地系统上;我只需要一个 GUI 来更轻松地与这个存储我的研究数据的大型数据库进行交互。当我最初编译和部署应用程序时,它工作正常并且与数据库没有连接问题。但是,如果我随后在 SQL Server Management Studio 中附加数据库(有时我想这样做),我下次尝试使用该应用程序时会收到错误消息 - “无法打开数据库......登录请求,登录失败”。即使我在退出 SSMS 之前使数据库脱机并分离它,我也会收到此错误。为了清楚起见 - 我没有对 SSMS 中的数据库进行任何更改,我只是在查看数据。 VS使用的连接字符串是Data Source (LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\CollectionMetricsDatabase.mdf;Integrated Security=True。

知道问题出在哪里吗?

【问题讨论】:

    标签: c# sql-server database


    【解决方案1】:

    也许 SQL Server 2012 的实例具有最大并发连接数,而您同时使用两个连接(SSMS 连接和应用程序连接)超过了该值。检查 SSMS 中的设置。

    要尝试的另一件事 - 根据您的连接字符串,您正在使用集成安全性,根据我的经验,这意味着应用程序使用 Windows 凭据进行连接。这可能很脆弱,因为这意味着运行应用程序的任何“用户”(如果托管在 IIS 中,这将是应用程序池用户)是使用其 Windows 凭据的用户。我建议为数据库创建一个具有 db_owner 访问权限的 SQL 登录用户(在 SSMS 中),然后将应用程序的连接更改为基于用户名/密码。如果 SSMS 中的 SQL Server 实例不允许,您可能需要启用混合身份验证。

    【讨论】:

      【解决方案2】:

      您需要在 SSMS 中使用 localDB 连接字符串进行连接。附加它会阻止它与 localDB 一起使用。

      在 SSMS 中,创建到 (LocalDB)\v11.0 的连接。您应该已经在那里看到了您的数据库。

      【讨论】:

      • 他可以在ssms中连接
      • @Mike:他将它附加到服务器上,该服务器锁定了数据库,使用 localDB 不会锁定它与使用它的其他 localDB 连接。
      【解决方案3】:

      问题是您不是通过 SQL Server 直接连接到数据库文件。

      当时只有一个用户可以锁定该文件。

      您需要为您的应用重新创建一个连接字符串。

      这就是您需要分离数据库的原因。

      由于这只是一个个人项目,您可以按原样处理,至少您知道服务器仅在您需要时运行。

      create connection msdn

      【讨论】:

      • @jamieivy,您能告诉我们哪种解决方案可以让您连接到数据库,这样您就可以帮助未来遇到类似问题的用户吗?
      猜你喜欢
      • 2018-10-07
      • 2011-07-27
      • 2016-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-21
      • 2021-04-06
      相关资源
      最近更新 更多