使用jTD连接到SQL Server 2012

时间:2013-06-19 11:57:20

标签: sql-server jtds

尝试使用JDBC连接到SQL Server 2012(Express Edition)。

这是我的代码:

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

启用混合身份验证模式

当我使用&#34; sa&#34;

登录时,与Management Studio一起使用

我几乎尝试了一切。我似乎无法找到解决方案。我尝试更改instance = SQLExpress。删除实例属性。添加用户名和密码属性。添加databasename属性。什么都行不通。

任何帮助都将不胜感激。

解决方案:

我重新安装了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 Server时也不要忘记使用混合身份验证模式。

1 个答案:

答案 0 :(得分:1)

将应用程序从MSSQL Server 2005移动到MSSQL Server 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