2013-06-28 333 views
12

我寫了一個非常簡單的jdbc登錄測試程序。在我遇到各種各樣的問題後,它幾乎能夠正常工作。幾乎,似乎無法通過此「SQLServerException:登錄失敗的用戶xxxxx」問題。SqlServer:用戶登錄失敗

我創建了一個簡單的數據庫PersonInfo然後我創建了用戶user1 password1(sql認證)。嘗試一切後無法連接到數據庫。

我在Win 7上使用SqlServer2008,我從Microsoft獲得了最新的jdbc驅動程序。

我的代碼是:

import java.sql.*; 

public class hell { 
public static void main(String[] args) { 

    try { 
     Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance(); 
Connection conn= DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=PersonInfo;user=Sohaib;password=0000;"); 


System.out.println("connected"); 
     } 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
} 

這裏的異常

Exception: Unable to get connect 
com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user 'Sohaib'. 
and all other supporting errors.. 

不幸的是我現在死在水中,直到某種SqlServer的大師或JDBC大師憐惜我,幫助我。

在此先感謝。

+0

可能有一些事情,可能會導致這個 - 看看http://stackoverflow.com/questions/6403636/connecting-sql-server-2008-to-java-login-失敗的用戶錯誤?rq = 1,看看是否有任何建議可以幫助你。 – DrewCo

+0

如果您在數據庫中創建了「user1 password1」,您當然應該在連接字符串中使用「user1 password1」。用戶1是否有足夠的權利?另一個提示:你是否嘗試在sql server management studio中連接user1? – gartenabfall

回答

49

您的SQL Server處於'混合模式身份驗證'嗎?這是使用SQL服務器帳戶而不是Windows登錄帳戶登錄所必需的。

您可以通過檢查服務器的屬性,然後安全驗證這一點,就應該在「SQL Server和Windows身份驗證模式」如果用戶試圖使用憑據無法登錄時

這個問題驗證。在以下情況下可能會發生此問題:

方案1:登錄可能是SQL Server登錄,但服務器只接受Windows身份驗證。

場景2:您正嘗試使用SQL Server身份驗證進行連接,但使用的登錄名在SQL Server上不存在。

場景3:登錄可能使用Windows身份驗證,但登錄名是無法識別的Windows主體。無法識別的Windows主體意味着Windows無法驗證登錄。這可能是因爲Windows登錄來自不受信任的域。

用戶輸入錯誤信息也是可能的。

http://support.microsoft.com/kb/555332

1

我嘗試(使用SQL-CLI)連接到我的SQL數據庫在Azure中時,得到了同樣的錯誤消息。簡單的解決辦法是逃避這樣的單引號的密碼:

mssql -s server.database.windows.net -u [email protected] -p 'your_password' -d your_db -e 
0

還要確保帳戶不會顯示在用戶屬性鎖定「狀態」選項卡

0

對於Can not connect to the SQL Server. The original error is: Login failed for user 'username'.錯誤,MSSQL服務器的端口要求方需要得到履行。

需要在Windows防火牆上配置默認端口1433以外的其他端口。

https://stackoverflow.com/a/25147251/1608670