我有一個Visual Studio C++項目(非託管C++),我試圖連接到局域網中另一臺機器上的SQL Server 2008實例我使用TCP/。IP我的連接字符串是:SQL Server 2008錯誤18456狀態58,登錄失敗的用戶「
"DRIVER={SQL Server Native Client 10.0};Server=tcp:169.254.204.232,1433;Network Library=DBMSSOCN;Initial Catalog=myDB;User ID=myDBUser;Password=myPassword;"
重要的事實:我能夠成功地遠程連接到與用戶ID myDBUser和密碼實例使用MYPASSWORD SSMS - 使用SQL身份驗證模式(並指定TCP/IP在連接選項中)!另外,一旦登錄,我可以成功導航數據庫myDB。
所以是的,我已啓用我的服務器上的混合模式身份驗證。
另請注意,當我的實例是本地並且使用Windows身份驗證時,相同的代碼已成功連接。換句話說,自從最後一件工作完成以來,發生了什麼變化,是因爲我將服務器移到了另一臺機器上,現在正在使用SQL身份驗證,因此更改了我的連接字符串 - 代碼根本沒有任何更改。
以下是錯誤消息我在SQL Server 2008實例的服務器日誌得到:
用戶登錄失敗」原因:。嘗試使用SQL驗證失敗登錄服務器配置爲僅Windows身份驗證 錯誤:18456,嚴重性:14,狀態:58
注意的是,用戶在錯誤信息被引用爲空,即使我的連接字符串我指定一個非空的用戶ID
其他連接。我嘗試過的字符串給出了相同的結果:
"DRIVER={SQL Server Native Client 10.0};Server=MACHINE2;Database=myDB;User ID=myDBUser;Password=myPassword;" (where MACHINE2 is the windows name of the machine hosting the sql server instance.)
我沒有在上述連接字符串中指定實例名稱,因爲我的實例是作爲默認實例安裝的,而不是命名實例。
關於如何解決這個問題的任何想法?
更新:我似乎解決了這個問題。你準備好了解這個錯誤信息是多麼愚蠢和完全無關嗎? 在連接字符串中,我只是將「用戶ID」更改爲「uid」和「密碼」更改爲「pwd」,現在它可以工作。 我現在在我的SQL Server日誌中看到「連接成功」...
您說您已啓用混合模式身份驗證,但異常消息明確指出,否則。自更改認證模式後是否重新啓動?看到這篇文章:http://stackoverflow.com/questions/8441158/an-attempt-to-login-using-sql-authentication-failed – Jacco 2013-02-13 21:50:29