Sql-Server

使用 SQL 身份驗證連接到域外的 SQL Server

  • May 5, 2017

我有一個使用 SQL 身份驗證連接到 SQL 伺服器的 C# 應用程序,但要使用它的機器不在域中。

我已經嘗試解決這個問題好幾天了。在我的開發機器上,連接字元串工作得很好,並且沒有使用 Windows 身份驗證。一旦它在域外的其他一個上,包括我機器上的非域帳戶,就會發生此錯誤。

登錄失敗。登錄來自不受信任的域,不能與 Windows 身份驗證一起使用。錯誤:18452

連接字元串是(為便於閱讀,省略了詳細資訊並進行了編輯):

數據源=

$$ servername $$; 初始目錄=

$$ Database $$; 持久安全資訊=真;

使用者 ID=

$$ username $$; 密碼=

$$ password $$; 信任伺服器證書=真;

我還嘗試了其他字元串選項,例如 Trusted_Connection(嘗試了真假)和 Integrated Security=SSPI。

所有伺服器連接設置都是正確的(允許遠端連接、埠、Windows 和 SQL 身份驗證),我可以使用使用者名和密碼連接到 SSMS 上的伺服器就好了。

假設我的設置是正確的(某處肯定有問題),如果我無法遠端登錄,這難道不會破壞使用 SQL 使用者登錄的意義嗎?無論如何,任何幫助表示讚賞。

事實證明,即使您使用 Visual Studio 嚮導使用某個連接字元串,VS 也不會更改對它的其他引用。程式碼和設置文件仍在使用舊的連接字元串。

我對整個項目並不熟悉,因為我只是負責修改它以獲得更多功能。

因此,對於將來遇到相同問題並且似乎無法找到答案的其他人:

  • 如果所有伺服器設置都正確,那麼它一定是您的程式碼。
  • 確保如果您通過Properties.Settings.Default.ConnectionStringName引用項目中的連接字元串或不是硬編碼的連接字元串,則它引用正確的連接字元串並且當您使用時沒有任何其他字元串’重做。

如果模組想要將其移至 StackOverflow,因為這實際上是一個程式碼問題,由你們決定。

公平警告:我不是 C# 開發人員(我也不會在電視上玩)。

錯誤消息堅持它正在嘗試使用 Windows 身份驗證,即使您不是。(“Integrated Security=SSPI”表示您正在使用 Windows 身份驗證,例如,“受信任的連接”也是如此。)所以我想知道您遺漏的細節之一是否僅用於 Windows 身份驗證。

此 MSDN 連結僅用於 SQL 身份驗證,可能對您有幫助,也可能對您沒有幫助。 此 MSDN 連結僅用於 Windows 身份驗證,可能會告訴您需要避免的選項。

引用自:https://serverfault.com/questions/848213