2016-10-27 340 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, –

相關問題