2016-06-14 156 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

相關問題