Conexión a Azure Data Explorer con ODBC
Java Database Connectivity (JDBC) es una API de Java que se usa para conectarse a bases de datos y ejecutar consultas. Puede usar JDBC para conectarse a Azure Data Explorer. Esta funcionalidad es posible mediante el punto de conexión compatible con TDS de Azure Data Explorer, que emula Microsoft SQL Server. El punto de conexión admite las versiones 7.x y 8.0 de TDS.
Para más información, consulte la información general sobre SQL Server emulación en Azure Data Explorer.
Conexión con JDBC
En los pasos siguientes se describe cómo usar JDBC para conectarse a Azure Data Explorer.
Cree una aplicación con
mssql-jdbc
JAR,adal4j
JAR y todas sus dependencias. A continuación se muestra una lista de dependencias necesarias al usar la7.0.0
versión demssql-jdbc
y1.6.3
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
Cree una aplicación para usar la clase de controlador JDBC com.microsoft.sqlserver.jdbc.SQLServerDriver. Puede conectarse con un cadena de conexión del siguiente formato. Reemplace
<cluster_name.region>
por el nombre del clúster y la región del clúster y<database_name>
por el nombre de la base de datos.jdbc:sqlserver://<cluster_name.region>.kusto.windows.net:1433;database=<database_name>;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.kusto.windows.net;loginTimeout=30;authentication=ActiveDirectoryIntegrated
Autenticación de usuario de JDBC
A continuación se muestra un ejemplo de cómo autenticarse mediante programación mediante Microsoft Entra id. con JDBC para una entidad de seguridad de usuario.
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();
}
}
}
Autenticación de aplicaciones JDBC
A continuación se muestra un ejemplo de cómo autenticarse mediante programación mediante Microsoft Entra id. con JDBC para una entidad de seguridad de aplicación.
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.
*/
}
}