2016-10-27 142 views
1

我已经开发了C#WPF应用程序,我使用的数据库的MDF文件, 我的连接字符串的样子:无法打开DATABSE的登录请求,登录失败,用户登录失败

Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\appDataBase.mdf;Integrated Security=True;Connect Timeout=30

这里我我正在更换| DataDirectory |用户的应用程序数据文件夹

数据库文件是在用户的AppData文件夹,我创建 副本.mdf文件_users当我安装它 客户端的计算机应用程序数据文件夹,它的工作原理,其完美
的设置,但是当我卸载和 重新安装,我无法连接该文件,得到错误:

Can't open database "C:/users/myusername/appdata/roaming/myapplication/database/appDataBase.mdf" requested by login, login failed, login failed for user..

文件是存在的,但不知何故,它使用SQL服务器,并且不能 打开它。也同时启动应用程序的所有我创建 备份文件的时间,一个也与错误而失败

System.IO.IOException: The process cannot access the file 'C:\Users\myusername\AppData\Roaming\myapplication\Database\appDataBase.mdf' because it is being used by another process.

任何人都可以给我确切的解决方案,因为我必须只有我的客户端计算机上使用的LocalDB,我不我希望他们让我做任何额外的配置安装我的应用程序,i.am仍然面临iasue后,我改变我的代码关闭数据库连接主窗口关闭事件。

回答

1

这种类型的事情发生,因为你的对象,它是使用数据库的一个仍然在后台运行,所以请所有配置的数据库相关的实例还配置并关闭所有的数据库相关的对象捕捉()。

尝试捕捉将帮助您检测确切行号你在哪里得到错误,也表明由于哪个对象越来越错误。

如果你想检查为什么发生这种情况,然后打开任务管理器,并寻找出服务有你肯定发现其持有对象数据库服务。

+0

所以,当应用程序启动时,我必须检查所有打开的连接到MDF文件?并断开它是否从上次执行打开? –

+0

不,只是把你的代码放在try catch中,在try和catch中处理和关闭所有的对象,所以它永远不会产生同样的问题。寻找一个实例并关闭它并不是一个好习惯。可能你已经打开了数据库的连接,并忘记使其关闭寻找。 –

+0

我研究,我发现我不应该使用(的LocalDB)\ V11.0,相反,它应该是.SQLEXPRESS,我对我的应用程序的先决条件指定安装在客户计算机的SQL Express,它是工作第一时间( LocalDB)\ v11.0, –

相关问题