3

Eclipse IDE で Java コードを使用して HP Operations Manager データベースに接続しようとしています。Microsoft SQL Server Management Studio 2008 では正常に接続できますが、コードでは失敗します。「Microsoft JDBC Driver 4.0 for SQL Server」をインストールしました

コード:

import java.sql.*;

public class ConnectDatabase {

    Connection dbConnection = null;

    String dbName = "openview";
    String serverip="10.105.219.102";
    String serverport="1433";
    String url = "jdbc:sqlserver://"+serverip+"\\OVOPS;databaseName="+dbName+"";
    String userName = "HPOM-QA-WIN\\Administrator"; 
    String password = "Nbv12345";
    final String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
    Statement statement = null;
    ResultSet rs = null;
    int updateQuery = 0;

    public Connection getConnection() {

        System.out.println(url);
        try{
             Class.forName(driverName).newInstance();

             dbConnection = DriverManager.getConnection(url,userName,password);
             System.out.println(DriverManager.getDrivers());

             statement = dbConnection.createStatement();

             String QueryString = "select Id from openview.dbo.OV_MS_Message where OriginalServiceId like '{FaultDn[1]}'";

             updateQuery = statement.executeUpdate(QueryString);

             if(updateQuery!=0){
                System.out.println("success" + updateQuery);
             }
             statement.close();
             dbConnection.close();
          }catch (Exception e){
              e.printStackTrace();
         }
         return dbConnection;

     }

     public static void main(String[] args) {

        ConnectDatabase cDB = new  ConnectDatabase();
        cDB.getConnection();

    }

 }

このコードを実行すると、次のエラーが発生します。

jdbc:sqlserver://10.105.219.102\OVOPS;databaseName=openview com.microsoft.sqlserver.jdbc.SQLServerException: The connection to the host 10.105.219.102, named instance ovops failed. Error: "java.net.SocketTimeoutException: Receive timed out". Verify the server and instance names and check that no firewall is blocking UDP traffic to port 1434.  For SQL Server 2005 or later, verify that the SQL Server Browser Service is running on the host.
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:190)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.getInstancePort(SQLServerConnection.java:3589)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.primaryPermissionCheck(SQLServerConnection.java:1225)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:972)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827)
    at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1012)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at com.ucs.test.ConnectDatabase.getConnection(ConnectDatabase.java:27)
    at com.ucs.test.ConnectDatabase.main(ConnectDatabase.java:51)

URLを変更すると

String url = "jdbc:sqlserver://"+serverip+"\\OVOPS:"+serverport+";databaseName="+dbName+"";

以下のエラーが表示されます。

jdbc:sqlserver://10.105.219.102\OVOPS:1433;databaseName=openview com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user 'HPOM-QA-WIN\Administrator'. ClientConnectionId:f1d323b7-9998-418c-b2a2-f2a7bd7b9b04
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216)
    at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(tdsparser.java:254)
    at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:84)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:2908)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:2234)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$000(SQLServerConnection.java:41)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:2220)
    at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1326)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:991)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827)
    at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1012)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at com.ucs.test.ConnectDatabase.getConnection(ConnectDatabase.java:27)
    at com.ucs.test.ConnectDatabase.main(ConnectDatabase.java:51)

Windows ファイアウォールに受信規則を明示的に追加して、1434 ポートで UPD トラフィックを許可し、ファイアウォールを無効にしました。しかし、私はまだこのエラーが発生します。ここで提供される資格情報は、Microsoft SQL Server Management Studio を使用した接続に使用され、完全に正常に機能します。しかし、それはコードを通して失敗します。

どこが間違っているのかわかりません。コードを介して正常な接続を確立できません。私を助けてください。

4

5 に答える 5

3

返信ありがとうございます。最後に、問題を解決することができました。問題は、url と auth dll にありました。URLをに変更しました

"jdbc:sqlserver://10.105.219.102:1433;instance=OVOPS;DatabaseName=openview;integratedSecurity=true" 

java.library.path に「sqljdbc_auth.dll」の場所を追加しました。出来た!

私を助けてくれてありがとう:)

于 2012-09-07T05:53:12.957 に答える
2

この問題を解決するのにしばらく時間がかかりましたが、SQL Server 構成マネージャー アプリケーションにアクセスする必要があります。それが読み込まれたら、[SQL Native Client 11.0 構成] > [クライアント プロトコル] を展開します。

3 つすべて (共有メモリ、TCP/IP、および名前付きパイプ) を有効にしていない場合は有効にします。次に、TCP/IP をクリックし、デフォルト ポートが 1433 であることを確認します。

32 ビット システムまたはバージョンの SQL Server がインストールされている場合は、SQL Native Client 11.0 構成 (32it) メニューで同じ操作を行い、共有メモリ、TCP/IP、および名前付きパイプを有効にし、デフォルト ポートを 1433 に設定します。

次に、[SQL Server ネットワーク構成] または (該当する場合は 32 ビット) をクリックして開き、["YOURSERVERNAME" のプロトコル] を選択します。共有メモリ、TCP/IP、および名前付きパイプがすべて有効になっていることを再度確認します。

[TCP/IP] プロトコル名をクリックし、新しいポップアップ ウィンドウの上部にある [IP アドレス] タブを選択します。IP1 の場合、Active が YES であることを確認してください。Enabled は YES (アクティブであっても、デフォルトでは No です)。TCPポートを1433に設定します(この手順を実行する必要があるかどうかはわかりませんが、実行したところうまくいきました!!); TCP 動的ポートが 0 に設定されており、IP アドレスを変更していません。

ローカル マシンである IP: 127.0.0.1 を持つ IP10 に対しても同じことを行いました。また、ページの一番下までスクロールし、IPAll TCP ポートを 1433 に設定しました (動的ポートは 49163 です)。次に、すべての変更を適用し、プロパティ ウィンドウを閉じて、SQL Server 構成マネージャーで SQL Server サービスをクリックし、実行中のすべてのサーバーを再起動する必要があります。これでうまくいくはずです:D

于 2014-10-20T20:14:56.767 に答える
1

キャッチ例:

    String url = "jdbc:sqlserver://localhost:1433/databaseName";
    String username = "user";
    String password = "pass";

Connection connection = DriverManager.getConnection(url, username, password);

1433 がデフォルトのポートです。URL に「\」を使用しないでください。

于 2012-09-05T14:04:50.690 に答える
0

これはおそらくあなたの質問に対する答えではありませんが、これがあなたの助けになることを願っています. 接続を正しく返す方法は次のとおりです(mysql):

import java.sql.*;

public class ConnectToDatabase{


    public Connection getConn(){

        final String DBPATH="jdbc:mysql://localhost:3306/mydb";
        final String DBUSER="root";
        final  String DBPASS="";
        Connection conn=null;
        try {
             conn = DriverManager.getConnection(DBPATH,DBUSER,DBPASS);

        } catch (SQLException e) {

            e.printStackTrace();
        }
    return conn;
    }

}
于 2012-09-05T14:06:37.230 に答える