Se connecter à Azure Data Explorer avec JDBC
Java Database Connectivity (JDBC) est une API Java utilisée pour se connecter aux bases de données et exécuter des requêtes. Vous pouvez utiliser JDBC pour vous connecter à Azure Data Explorer. Cette fonctionnalité est rendue possible par le point de terminaison compatible TDS d’Azure Data Explorer, qui émule Microsoft SQL Server. Le point de terminaison prend en charge les versions TDS 7.x et 8.0.
Pour plus d’informations, consultez la vue d’ensemble de l’émulation SQL Server dans Azure Data Explorer.
Se connecter avec JDBC
Les étapes suivantes décrivent comment utiliser JDBC pour se connecter à Azure Data Explorer.
Créez une application avec
mssql-jdbc
JAR,adal4j
JAR et toutes leurs dépendances. Voici la liste des dépendances requises lors de l’utilisation de la7.0.0
version de et1.6.3
demssql-jdbc
la version deadal4j
.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
Créez une application pour utiliser la classe de pilote JDBC com.microsoft.sqlserver.jdbc.SQLServerDriver. Vous pouvez vous connecter avec un chaîne de connexion au format suivant. Remplacez par
<cluster_name.region>
le nom de votre cluster et la région du cluster et<database_name>
par le nom de votre base de données.jdbc:sqlserver://<cluster_name.region>.kusto.windows.net:1433;database=<database_name>;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.kusto.windows.net;loginTimeout=30;authentication=ActiveDirectoryIntegrated
Authentification utilisateur JDBC
Voici un exemple montrant comment s’authentifier par programmation à l’aide de Microsoft Entra’ID avec JDBC pour un principal d’utilisateur.
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();
}
}
}
Authentification de l’application JDBC
Voici un exemple montrant comment s’authentifier par programmation à l’aide de Microsoft Entra’ID avec JDBC pour un principal d’application.
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.
*/
}
}