ローカル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)
何か案は?
ありがとう
Windows認証を使用しているデータベースに接続しようとする場合、接続文字列で 'integratedSecurity'オプションを使用できます。
DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=SocialFamilyTree;integratedSecurity=true;");
非常に最近、これを経験したので、ほとんど同じ問題を解決するために私が取った手順は
私にとって絶対的なキッカーは、インスタンスがリッスンするように設定されているIPアドレスとポートを理解していたため、接続文字列を作成したときに接続が拒否されませんでした。
また、Windowsログインを使用して接続する場合は、SQLインスタンスが混合モード認証用に構成されていることを確認する必要があります(つまり、WindowsおよびSQLログインを許可するため)
このエラーが発生したため、SQLサーバーはポートを正しくリッスンします。
ユーザーを定義する場合は、ツリーから[セキュリティ]-> [ログイン]に移動し、ログインフォルダを右クリックして[新しいログイン]をクリックします。
これで、サーバーはこのURL文字列で動作するはずです。サーバーのログファイルを使用すると、サーバーの動作を理解しやすくなります。
Re:やりました。それでも警告:sqljdbc_auth.dllの読み込みに失敗しました原因:Java.library.pathにsqljdbc_authがありません– Mike Oct 7 at 14:03
シェルから実行している場合は、EclipseまたはコマンドラインでVM引数の下にこれを追加して、sqljdbc_auth.dllへのパスを追加する必要があります。-Djava.library.path = "\ MS SQL Server JDBCドライバー3.0\sqljdbc_3.0\enu\auth\x86 "
32ビットWindowsを実行している場合です。それ以外の場合、最終的なサブディレクトリはそれに応じて変化します。
SQL Serverのユーザーベースの認証を設定するには、これがより良い答えになると思います。 SQL Server 2008をJavaに接続:ユーザーエラーのためログインに失敗しました
(私はそれをここに要約しようとします: http://silveira.wikidot.com/sql-server )