2

尝试使用 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

启用混合身份验证模式

当我使用“sa”登录时,与 Management Studio 一起工作正常

我几乎尝试了一切。我似乎找不到解决方案。我尝试更改 instance=SQLExpress。删除实例属性。添加用户名和密码属性。添加数据库名称属性。没有任何效果。

任何帮助,将不胜感激。

解决方案 :

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

4

1 回答 1

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
于 2015-10-16T10:11:12.310 回答