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 を変更してみました。インスタンス プロパティを削除しています。ユーザー名とパスワードのプロパティを追加します。databasename プロパティを追加します。何も機能しません。

どんな助けでも大歓迎です。

解決 :

SQL Server 2012 を再インストールしました。ようやく接続文字列が機能するようになりました。Microsoft SQL Server 2012 がデフォルト インスタンスの名前を変更したことが判明しました。SQLExpress ではなく MSSQLSERVER になりました。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

簡単に言うと、文字列の末尾に次の 2 つの属性を追加しました。

;instance=MSSQLSERVER;TDS=7.0
于 2015-10-16T10:11:12.310 に答える