我有一个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。
知道问题是什么吗?
答案 0 :(得分:0)
可能SQL Server 2012的实例具有最大并发连接数,并且您一次超过两个连接(SSMS连接和应用程序的连接)。检查SSMS中的设置。
要尝试的另一件事 - 根据您的连接字符串,您使用的是集成安全性,根据我的经验,这意味着应用程序使用Windows凭据进行连接。这可能很脆弱,因为这意味着无论“用户”运行应用程序(如果托管在IIS中,这将是应用程序池用户)都是使用其Windows凭据的应用程序。我建议为数据库创建一个SQL登录用户(在SSMS中),使用db_owner访问权限,然后将应用程序的连接更改为基于用户名/密码。如果SSMS中的SQL Server实例尚未允许,则可能需要为其启用混合身份验证。
答案 1 :(得分:0)
您需要使用localDB连接字符串连接SSMS。附加它将阻止它使用localDB。
在SSMS中,创建与(LocalDB)\v11.0
的连接。你应该已经在那里看到了你的数据库。
答案 2 :(得分:0)
问题是您是直接连接到数据库文件而不是通过SQL Server。
当时只有一个用户可以锁定文件。
您需要为应用重新创建连接字符串。
这就是您需要分离数据库的原因。
由于这只是一个个人项目,你可以按原样使用,至少你知道服务器只在你需要的时候运行。