2013-06-19 204 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