簡體   English   中英

SQL Server登錄在連接字符串中有效,但在DSN中失敗

[英]SQL Server login works in a connection string, but fails in DSN

我有一個網站,我正在嘗試設置DSN而不是使用連接字符串,因為它似乎更安全。

以下連接字符串在我的網站上可以正常運行:

"Server=servername; database=mydb; user id= web.account; password=PassW0rd!; Integrated Security=SSPI"

但是,當我嘗試設置DSN( 使用64位odbc admin )時,出現以下錯誤:

Connection failed:
SQLState: '28000'
SQL Server Error: 18456
[Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user 'web.account'

請記住,我使用與連接字符串中相同的帳戶和密碼(有效)。 這也很奇怪,因為在我單擊“ SQL Server應如何驗證登錄ID的真實性?”上的“下一步”后立即發生錯誤。 頁。

似乎odbc管理員甚至沒有嘗試連接到服務器來驗證憑據。 我可以檢查些什么來證明這一點/如何解決?

我嘗試過的事情:

  • 我已經檢查了服務器身份驗證模式( 如其他解決方案中所建議的那樣) ,並且應將其設置為“ SQL Server和Windows身份驗證模式”。
  • 我嘗試創建用戶DSN和系統DSN都遇到相同的錯誤,這似乎進一步證明了它沒有嘗試連接到服務器以檢查憑據。
  • 我在多個服務器上嘗試了相同的DSN創建,但都遇到了相同的問題。 SQL Server是否可能拒絕這些類型的連接?

更新1 :DBA剛剛告訴我,web.account實際上是Windows帳戶,而不是SQL帳戶。 我想這就是odbc無法正常工作的原因,因為它不會嘗試以其他Windows用戶身份(僅以當前Windows用戶身份)進行連接。 所以現在的問題是,如何用其他Windows帳戶設置DSN? 還是有可能嗎?

這篇帖子的回應是,使用NT身份驗證的DSN設置專門針對整個系統,而不是特定帳戶,因此可以從cmd使用runas命令,如下所示:

Runas / netonly /user:domain\\web.account“ C:\\ Windows \\ SysWOW64 \\ odbcad.exe”

然后它將要求您提供web.account密碼。 然后,您可以創建一個DSN,這應該可以工作。

更新:我必須使用此方法將web.account用戶添加到管理組 然后,我必須運行cmd作為我的提升帳戶。 然后運行上面顯示的runas命令。 然后,我終於能夠創建一個非本地的DSN,這使我能夠以其他Windows用戶身份連接到數據服務器。

仍在等待DBA檢查日志以說這是否確實有效,但是我對此感覺很好。 確認后將更新。

請嘗試以下操作:

Data Source=servername;Initial Catalog=mydn;Persist Security Info=True;User ID=web.account;Password=Passw0rd

這就是我用來連接的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM