10

ローカル SQL DB との接続をテストしようとしています。私はこのコードを持っています:

try{
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
    DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=SocialFamilyTree;user=SOSCOMP");

}catch(Exception e){
    System.out.println("Couldn't get database connection.");
    e.printStackTrace();
}

多くのユーザーを試しました。私の Windows ユーザーは SOSCOMP で、パスワードを持っていません。また、SQL 2008 が「sys」「dbo」としてユーザーを作成することも知っています。これらも試しました。私はいつも得ています:

Couldn't get database connection.
com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user 'SOSCOMP'.

    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:196)
    at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(tdsparser.java:246)
    at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:83)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:2532)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:1929)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$000(SQLServerConnection.java:41)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:1917)
    at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:4026)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1416)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1061)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:833)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:716)
    at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:841)
    at java.sql.DriverManager.getConnection(DriverManager.java:579)
    at java.sql.DriverManager.getConnection(DriverManager.java:243)
    at FT_Receiver.FT_Receiver.main(FT_Receiver.java:12)

何か案は?

ありがとう

4

5 に答える 5

21

Windows 認証を使用しているデータベースに接続しようとすると、接続文字列で「integratedSecurity」オプションを使用できます。

DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=SocialFamilyTree;integratedSecurity=true;");
于 2012-10-07T13:27:42.800 に答える
8

ごく最近これを経験したので、ほぼ同じ問題を解決するために私が取った手順は

  1. SQL Server Management Studio を使用して目的のアカウントでログインし、読み取り (および必要に応じて書き込み) へのアクセスを確認します。
  2. SQL Server 構成マネージャーを使用して、対象の IP アドレスでサーバー インスタンスがリッスンしていることを確認します。
  3. ファイアウォールを無効にして、邪魔になっていないことを確認します (必要に応じて、将来の使用のために例外を追加します)。

私にとって絶対的なキッカーは、接続文字列を作成したときに接続が拒否されないように、インスタンスがリッスンするように設定されている IP アドレスとポートを理解することでした。

また、Windows ログインを使用して接続する場合は、SQL インスタンスが混合モード認証用に構成されていることを確認する必要があります (つまり、Windows と SQL ログインを許可するため)。

于 2012-10-07T13:22:42.783 に答える
1

Re: やった。まだ警告: sqljdbc_auth.dll 原因の読み込みに失敗しました:- java.library.path に sqljdbc_auth がありません – Mike 10 月 7 日 14:03

シェルから実行している場合は、Eclipse またはコマンドラインの VM 引数の下にこれを追加して、sqljdbc_auth.dll へのパスを追加する必要があります: -Djava.library.path="\MS SQL Server JDBC Driver 3.0\sqljdbc_3.0\enu \認証\x86"

これは、32 ビット Windows を実行している場合です。それ以外の場合、最終的なサブディレクトリはそれに応じて変更されます。

ただし、SQL Server ユーザーベースの認証を設定するには、これがより良い答えになると思います

(ここで要約してみます: http://silveira.wikidot.com/sql-server )

于 2012-11-22T05:29:35.633 に答える