3

JDBC を介して Azure SQL Data Warehouse に接続しようとしています。次の例外が発生しています。

*

com.microsoft.sqlserver.jdbc.SQLServerException: The TCP/IP connection to the host tcsqldatawh.database.windows.net, port 1433 has failed. Error: "null. Verify the connection properties. Make sure that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port. Make sure that TCP connections to the port are not blocked by a firewall.".
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:191)
at com.microsoft.sqlserver.jdbc.SQLServerException.ConvertConnectExceptionToSQLServerException(SQLServerException.java:242)
    at com.microsoft.sqlserver.jdbc.SocketFinder.findSocket(IOBuffer.java:2280)
    at com.microsoft.sqlserver.jdbc.TDSChannel.open(IOBuffer.java:493)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1387)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:1068)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:904)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:451)
    at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1014)
    at java.sql.DriverManager.getConnection(DriverManager.java:664)
    at java.sql.DriverManager.getConnection(DriverManager.java:270)
    at testsqldw.SQLDatabaseConnection.main(SQLDatabaseConnection.java:30)

*

ここで、SQLServer DB への接続について同様の質問が寄せられるのを見てきました。

こちらのプロセスを使用して、自分の IP へのアクセスを許可するようにデータベースを構成しました。

以下のコードを確認してください。

package testsqldw;

import java.sql.*;  

    public class SQLDatabaseConnection {  

        // Connect to your database.  
        // Replace server name, username, and password with your credentials  
        public static void main(String[] args) {  


            String connectionString =  
                    "jdbc:sqlserver://databaseserver.database.windows.net:1433;"
                    +"database=databaseserver;"
                    +"user=username@databaseserver;"
                    + "password=password;"
                    + "encrypt=true;"
                    + "trustServerCertificate=false;"
                    + "hostNameInCertificate=*.database.windows.net;"
                    + "loginTimeout=30;";

            System.out.println("Total connection string is---\n"+connectionString);

            // Declare the JDBC objects.  
            Connection connection = null;  
            Statement statement = null;   
            ResultSet resultSet = null;  

            try {  
                connection = DriverManager.getConnection(connectionString);  

                // Create and execute a SELECT SQL statement.  
                String createSql = "create table employee(employee_id varchar(20));";  
                statement = connection.createStatement();  
                boolean status=statement.execute(createSql);

                System.out.println(status);

                // Print results from select statement  

            }  
            catch (Exception e) {  
                e.printStackTrace();  
            }  
            finally {  
                // Close the connections after the data has been handled.  

                if (statement != null) try { statement.close(); } catch(Exception e) {}  
                if (connection != null) try { connection.close(); } catch(Exception e) {}  
            }  
        }  
    }  

接続文字列の合計は

jdbc:sqlserver://databaseserver.database.windows.net:1433;database=databaseserver;user=username@databaseserver;password=password;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout= 30;

問題を解決するために私を助けてください。

4

1 に答える 1

1

私の経験によると、この問題は次の理由で発生する可能性があります。

  1. 作成した SQL Server は正常に動作しない可能性があります。
  2. 正しくない JDBC 接続文字列を使用している可能性があります。

最初の理由として、いくつかのクライアント ツールを使用して SQL サーバーに接続できます。サーバーに接続できた場合は、SQL サーバーに問題がないことを示しています。そうでない場合は、新しい SQL Server を作成できます。その後、この URL https://azure.microsoft.com/en-us/documentation/articles/sql-data-warehouse-get-started-provision/に従って、新しい SQL Data Warehouse を作成できます。URL には、ファイアウォールの構成方法も含まれています。

SQL Server InTouch を使用して SQL Server に接続します。以下は、いくつかの説明画像です。

ここに画像の説明を入力

パラメーターは、Azure ポータルで取得できます。ポート番号は 1433 です。

次の図は、サーバーが正常であることを示しています。

ここに画像の説明を入力

2 つ目の理由として、Azure ポータルから接続文字列をコピーし、パスワードのみを変更できます。

ここに画像の説明を入力

それが役に立てば幸い。ご不明な点がございましたら、お気軽にお問い合わせください。

于 2016-09-28T09:11:03.003 に答える