應用程式的 SQL 登入失敗,但 SSMS 則不然

應用程式的 SQL 登入失敗,但 SSMS 則不然

我用 C# (4.5) 編寫了一個簡單的測試應用程序,它只是連接到資料庫並顯示一條訊息。 (基本上只是為了測試部署和資料庫連線。)在我的本地工作站上,一切正常。我安裝了 SQL Express 2012,以目前使用者身分連線(整合安全性),沒有問題。

但是,當部署到 Windows Server 2008 時,應用程式無法連線到資料庫。它不斷收到登入失敗錯誤。

在伺服器上,我對 ​​SQL Express 2012 進行了相同的安裝。我什至嘗試打開混合模式身份驗證、創建用戶並以該用戶身份進行連接。我可以在 SQL Management Studio 中連接,但應用程式總是收到登入失敗錯誤。

Windows Server 2008 中是否存在一些隱藏的安全性設置,我需要對其進行修改以允許 .NET 應用程式連接到 SQL 伺服器?當我可以透過 SSMS 登入資料庫但無法透過應用程式登入資料庫時,什麼可能會導致這種行為?

錯誤:

System.Data.SqlClient.SqlException(0x80131904):無法開啟登入要求的資料庫「TestDatabase」。登入失敗。使用者“sa”登入失敗。

sa當然,這是我嘗試連接作為測試的最後努力時出現的錯誤版本。 TestUser(我為此創建的 SQL 用戶)以及PERSONALSERVER\Administrator(運行應用程式的當前登入使用者)也會發生相同的錯誤。

我嘗試過的連接字串是:

  • Data Source=localhost\sqlexpress2012;Initial Catalog=TestDatabase;Integrated Security=True
  • Data Source=localhost\sqlexpress2012;Initial Catalog=TestDatabase;User Id=TestUser;Password=testpassword

答案1

在設定管理員中,請確保啟用 TCP/IP 和命名管道。

在控制面板中,嘗試使用SQL Server 驅動程式(在管理工具下)-> 資料來源建立SQL 連接,因為這只會測試具有很少變數的本機連接(例如,您的程式碼(我確信它寫得完美) :) ))

另外,你有兩個地方引用你的連接字串嗎(我已經這樣做了);它保存在我的 app.config 檔案中,並作為我的程式碼中的字串(甚至是資源字串)。

透過 IP 位址而不是電腦名稱進行連接(這意味著也要更新您的連接字串 - 有關如何操作的詳細信息,請參閱本文底部)。

最後,將您的連接字串更新為

資料來源=.\sqlexpress2012;初始目錄=測試資料庫;整合安全=SSPI;使用者 ID=myDomain\myUsername;密碼=我的密碼;

或者試試看:

伺服器=.\sqlexpress2012;資料庫=測試資料庫; Trusted_Connection=真;

我假設使用者對相關資料庫擁有有效的權限。 :)

確保 SQL 連接埠(通常為 1433 和 1434)已開啟。

使用使用者名稱/密碼登入 SSMS,以確保他們具有權限。

www.ConnectionStrings.com- 連接字串的絕佳資源! :)

相關內容