2013-06-19 246 views
2

試圖使用JDBC連接到SQL Server 2012(速成版)。使用jTDs連接到SQL Server 2012

這裏是我的代碼:

import java.sql.*; 

public class MSSqlTestConnection { 
    public static void main(String[] args) { 
     try { 
      Connection con = DriverManager.getConnection (
       "jdbc:jtds:sqlserver://localhost;instance=LOCALDB#B431115D;DatabaseName=foo","sa","my_password" 
      ); 
      Statement stmt = con.createStatement(); 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

我已經試過各種可能的組合使用。以下是完整的堆棧跟蹤:

java.sql.SQLException: Login failed for user 'sa'. 
    at net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:372) 
    at net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2988) 
    at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2421) 
    at net.sourceforge.jtds.jdbc.TdsCore.login(TdsCore.java:632) 
    at net.sourceforge.jtds.jdbc.JtdsConnection.<init>(JtdsConnection.java:371) 
    at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:184) 
    at java.sql.DriverManager.getConnection(Unknown Source) 
    at java.sql.DriverManager.getConnection(Unknown Source) 
    at MSSqlTestConnection.main(MSSqlTestConnection.java:10) 

管道和TCP/IP啓用

當我登錄使用的「sa」

混合身份驗證模式下啓用

正常工作與管理工作室我幾乎試過一切。我似乎找不到解決辦法。我試着改變instance = SQLExpress。刪除實例屬性。添加用戶名和密碼屬性。添加數據庫名稱屬性。什麼都沒有

任何幫助,將不勝感激。

SOLUTION:

我重新安裝了SQL Server 2012的最後一到工作的連接字符串。原來,Microsoft SQL Server 2012已經更改了默認實例的名稱。它現在是MSSQLSERVER而不是SQLExpress。你可以選擇你自己的實例即默認或指定在設置SQL Server 2012的

Connection Connect = DriverManager.getConnection("jdbc:jtds:sqlserver://localhost:1433;instance=MSSQLSERVER;DatabaseName=Database_name",user,password); 

也不要忘了使用混合身份驗證模式,同時設置SQL服務器。

+0

混合身份驗證模式......讓我想知道一小時出了什麼問題:(好的提示! – Dan

+0

嗨,我可以知道你使用的是什麼版本的jtds嗎? – AuroraBlaze

+0

,你有沒有得到這個錯誤信息?錯誤:發生異常! - JVM不支持字符集0x0904000128/Cp850。 – AuroraBlaze

回答

1

我經歷了同樣的症狀移動從MSSQL Server 2005的應用程序服務器MSSQL 2012年後

我的解決方法是在連接字符串從

jdbc:jtds:sqlserver://a.example.com/xyz;user=bob;password=xxx 

改變

jdbc:jtds:sqlserver://a.example.com/xyz;instance=MSSQLSERVER;user=bob;password=xxx;TDS=7.0 

簡而言之,我在字符串的末尾添加了這兩個屬性:

;instance=MSSQLSERVER;TDS=7.0