다음을 통해 공유


JDBC를 사용하여 Azure Data Explorer에 연결

JDBC(Java Database Connectivity)는 데이터베이스에 연결하고 쿼리를 실행하는 데 사용되는 Java API입니다. JDBC를 사용하여 Azure Data Explorer에 연결할 수 있습니다. 이 기능은 Microsoft SQL Server 에뮬레이트하는 Azure Data Explorer TDS 규격 엔드포인트에서 가능합니다. 엔드포인트는 TDS 버전 7.x 및 8.0을 지원합니다.

자세한 내용은 Azure Data Explorer SQL Server 에뮬레이션에 대한 개요를 참조하세요.

JDBC로 연결

다음 단계에서는 JDBC를 사용하여 Azure Data Explorer 연결하는 방법을 설명합니다.

  1. JAR, adal4j JAR 및 모든 종속성을 사용하여 mssql-jdbc 애플리케이션을 만듭니다. 다음은 의 버전 및 버전을 사용할 7.0.0 때 필요한 종속성 목록입니다adal4j.mssql-jdbc1.6.3

    mssql-jdbc-7.0.0.jre8.jar
    adal4j-1.6.3.jar
    accessors-smart-1.2.jar
    activation-1.1.jar
    asm-5.0.4.jar
    commons-codec-1.11.jar
    commons-lang3-3.5.jar
    gson-2.8.0.jar
    javax.mail-1.6.1.jar
    jcip-annotations-1.0-1.jar
    json-smart-2.3.jar
    lang-tag-1.4.4.jar
    nimbus-jose-jwt-6.5.jar
    oauth2-oidc-sdk-5.64.4.jar
    slf4j-api-1.7.21.jar
    
  2. JDBC 드라이버 클래스 com.microsoft.sqlserver.jdbc.SQLServerDriver를 사용하는 애플리케이션을 만듭니다. 다음 형식의 연결 문자열 연결할 수 있습니다. <cluster_name.region> 을 클러스터 이름 및 클러스터 지역으로 바꾸고 <database_name> 을 데이터베이스 이름으로 대체합니다.

    jdbc:sqlserver://<cluster_name.region>.kusto.windows.net:1433;database=<database_name>;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.kusto.windows.net;loginTimeout=30;authentication=ActiveDirectoryIntegrated
    

JDBC 사용자 인증

다음은 사용자 보안 주체에 대해 JDBC와 함께 Microsoft Entra ID를 사용하여 프로그래밍 방식으로 인증하는 방법의 예입니다.

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import com.microsoft.sqlserver.jdbc.SQLServerDataSource;
import com.microsoft.aad.msal4j.*;

public class Sample {
  public static void main(String[] args) throws Exception {
    IAuthenticationResult authenticationResult = futureAuthenticationResult.get();
    SQLServerDataSource ds = new SQLServerDataSource();
    ds.setServerName("<cluster_DNS>");
    ds.setDatabaseName("<database_name>");
    ds.setHostNameInCertificate("*.kusto.windows.net"); // Or appropriate regional domain.
    ds.setAuthentication("ActiveDirectoryIntegrated");
    try (Connection connection = ds.getConnection();
         Statement stmt = connection.createStatement();) {
      ResultSet rs = stmt.executeQuery("<T-SQL_query>");
      /*
      Read query result.
      */
    } catch (Exception e) {
      System.out.println();
      e.printStackTrace();
    }
  }
}

JDBC 애플리케이션 인증

다음은 애플리케이션 주체에 대해 JDBC와 함께 Microsoft Entra ID를 사용하여 프로그래밍 방식으로 인증하는 방법의 예입니다.

import java.sql.*;
import com.microsoft.sqlserver.jdbc.*;
import com.microsoft.aad.msal4j.*;
import java.net.MalformedURLException;
import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;

public class Sample {
  public static void main(String[] args) throws Throwable {
    // Can also use tenant name.
    String authorityUrl = "https://login.microsoftonline.com/<tenant_ID>";
    Set<String> scopes = new HashSet<>();
    scopes.add("https://<cluster_DNS>/.default");

    IConfidentialClientApplication clientApplication = ConfidentialClientApplication.builder("<application_client_ID>", ClientCredentialFactory.createFromSecret("<application_key>")).authority(authorityUrl).build();
    CompletableFuture<IAuthenticationResult> futureAuthenticationResult = clientApplication.acquireToken(ClientCredentialParameters.builder(scopes).build());
    IAuthenticationResult authenticationResult = futureAuthenticationResult.get();
    SQLServerDataSource ds = new SQLServerDataSource();
    ds.setServerName("<cluster_DNS>");
    ds.setDatabaseName("<database_name>");
    ds.setAccessToken(authenticationResult.accessToken());
    connection = ds.getConnection();
    statement = connection.createStatement();
    ResultSet rs = statement.executeQuery("<T-SQL_query>");
    /*
    Read query result.
    */
  }
}