2016-06-14 136 views
0

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

任何想法是什么问题?

回答

0

也许SQL Server 2012的实例有最大数量的并发连接,并且一次超过了这两个连接(SSMS连接和应用程序的连接)。检查SSMS中的设置。

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

0

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

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

+0

他可以在SSMS连接 – Mike

+0

@Mike:他将其连接到服务器,它锁定DB,使用的LocalDB不使用它,其他的LocalDB连接锁定。 – leppie

0

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

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

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

这就是为什么你需要分离数据库。

由于这只是一个个人项目,您可以像现实一样生活,至少您知道服务器只在需要时运行。

create connection msdn

+0

@jamieivy,你能告诉我们哪个解决方案可以连接到数据库吗,所以你可以帮助未来的用户解决类似的问题吗? – Mike

相关问题