Ansluta till Azure Data Explorer med JDBC
Java Database Connectivity (JDBC) är ett Java-API som används för att ansluta till databaser och köra frågor. Du kan använda JDBC för att ansluta till Azure Data Explorer. Den här funktionen möjliggörs av Azure Data Explorer SDS-kompatibla slutpunkt, som emulerar Microsoft SQL Server. Slutpunkten stöder TDS-versionerna 7.x och 8.0.
Mer information finns i översikten över SQL Server emulering i Azure Data Explorer.
Ansluta med JDBC
Följande steg beskriver hur du använder JDBC för att ansluta till Azure Data Explorer.
Skapa ett program med
mssql-jdbc
JAR,adal4j
JAR och alla deras beroenden. Följande är en lista över beroenden som krävs när du använder7.0.0
versionen avmssql-jdbc
och1.6.3
versionen avadal4j
.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
Skapa ett program för att använda JDBC-drivrutinsklassen com.microsoft.sqlserver.jdbc.SQLServerDriver. Du kan ansluta med en anslutningssträng med följande format. Ersätt
<cluster_name.region>
med klusternamnet och klusterregionen och<database_name>
med databasnamnet.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-användarautentisering
Följande är ett exempel på hur du programmatiskt autentiserar med hjälp av Microsoft Entra-ID med JDBC för ett användarhuvudnamn.
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-programautentisering
Följande är ett exempel på hur du programmatiskt autentiserar med hjälp av Microsoft Entra-ID med JDBC för ett programhuvudnamn.
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.
*/
}
}