Microsoft ODBC-driver voor Microsoft Fabric Data Engineering

ODBC (Open Database Connectivity) is een veelgebruikte standaard waarmee clienttoepassingen verbinding kunnen maken met en kunnen werken met gegevens uit databases en big data-platforms.

De Microsoft ODBC Driver for Fabric Data Engineering stelt je in staat om Spark-workloads in Fabric te verbinden, te bevragen en te beheren met de betrouwbaarheid en eenvoud van de ODBC-standaard. Gebouwd op Fabric's Livy API's, biedt de driver veilige en flexibele Spark SQL-connectiviteit naar je C/C++, .NET, Python en andere ODBC-compatibele applicaties en BI-tools.

Belangrijkste kenmerken

  • ODBC 3.x-compatibel: volledige implementatie van ODBC 3.x-specificatie
  • Microsoft Entra ID verificatie: meerdere verificatiestromen, waaronder Azure CLI, interactieve, clientreferenties, verificatie op basis van certificaten en toegangstokenverificatie
  • Ondersteuning voor Spark SQL-query's: Directe uitvoering van Spark SQL-instructies
  • Uitgebreide ondersteuning voor gegevenstypen: ondersteuning voor alle Spark SQL-gegevenstypen, waaronder complexe typen (ARRAY, MAP, STRUCT)
  • Opnieuw gebruiken van sessies: ingebouwd sessiebeheer voor verbeterde prestaties
  • High-concurrency-modus: Kiezen voor gedeelde, warme server-side Livy-sessies om de opstartlatentie van de verbinding en de Spark-cluster sprawl te verminderen
  • Ondersteuning voor grote tabellen: Geoptimaliseerde verwerking voor grote resultatensets met configureerbare paginaformaten
  • Asynchrone prefetch: laden van achtergrondgegevens voor verbeterde prestaties
  • Proxyondersteuning: HTTP-proxyconfiguratie voor bedrijfsomgevingen
  • Ondersteuning voor meerdere schema's in een lakehouse: Maak verbinding met een specifiek schema binnen een lakehouse
  • OneLake-integratie: Toegang tot lakehouse-gegevens die in OneLake zijn opgeslagen, inclusief tabellen over meerdere schema's, via een uniforme ODBC-interface zonder aparte opslagconfiguratie
  • Omgevingsitems ondersteunen: Fabric omgevingsitems koppelen tijdens het uitvoeren van taken om werkruimtebibliotheken, Spark-eigenschappen en variabelen toe te passen op elke sessie
  • Custom Spark-configuratie: Spark-configuratie-eigenschappen rechtstreeks doorgeven via de verbindingsreeks om sessiegedrag af te stemmen

Opmerking

In opensource Apache Spark worden database en schema synoniem gebruikt. Bijvoorbeeld, het uitvoeren van SHOW SCHEMAS of SHOW DATABASES in een Fabric-notitieboek geeft hetzelfde resultaat — een lijst van alle schema’s in het lakehouse.

Vereiste voorwaarden

Voordat u het Microsoft ODBC-stuurprogramma voor Microsoft Fabric Data Engineering gebruikt, moet u ervoor zorgen dat u het volgende hebt:

  • Besturingssysteem: Windows 10/11 of Windows Server 2016+
  • Fabric Access: Toegang tot een Fabric werkruimte
  • Microsoft Entra ID referenties: juiste referenties voor verificatie
  • Workspace- en lakehouse-id’s: GUID-id’s voor uw Fabric-workspace en -lakehouse
  • Azure CLI (optioneel): vereist voor azure CLI-verificatiemethode

Downloaden en MSI-installatie

  1. Download het Microsoft ODBC-stuurprogramma voor het MSI-pakket voor Microsoft Fabric Data Engineering
  2. Dubbelklik op MicrosoftFabricODBCDriver-2.0.msi.
  3. Volg de installatiewizard en accepteer de gebruiksrechtovereenkomst
  4. Installatiemap kiezen (standaard: C:\Program Files\Microsoft ODBC Driver for Microsoft Fabric Data Engineering\)
  5. De installatie voltooien

Stille installatie

# Silent installation
msiexec /i "MicrosoftFabricODBCDriver-2.0.msi" /quiet

# Installation with logging
msiexec /i "MicrosoftFabricODBCDriver-2.0.msi" /l*v install.log

Installatie controleren

Controleer na de installatie of het stuurprogramma is geregistreerd:

  1. Uitvoeren odbcad32.exe (ODBC-gegevensbronbeheer)
  2. Ga naar het tabblad Drivers
  3. Controleer of het Microsoft ODBC-stuurprogramma voor Microsoft Fabric Data Engineering wordt vermeld

Snelstartvoorbeeld

Dit voorbeeld laat zien hoe je verbinding maakt met Fabric en een query uitvoert met de Microsoft ODBC Driver for Microsoft Fabric Data Engineering. Voordat u deze code uitvoert, moet u ervoor zorgen dat u de vereisten hebt voltooid en het stuurprogramma hebt geïnstalleerd.

C/C++ voorbeeld

#include <windows.h>
#include <sql.h>
#include <sqlext.h>
#include <iostream>

int main() {
    SQLHENV environment = SQL_NULL_HENV;
    SQLHDBC connection = SQL_NULL_HDBC;
    SQLHSTMT statement = SQL_NULL_HSTMT;

    SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &environment);
    SQLSetEnvAttr(
        environment,
        SQL_ATTR_ODBC_VERSION,
        (SQLPOINTER)SQL_OV_ODBC3,
        0);
    SQLAllocHandle(SQL_HANDLE_DBC, environment, &connection);

    const char* connectionString =
        "DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
        "WorkspaceId=<workspace-id>;"
        "LakehouseId=<lakehouse-id>;"
        "AuthFlow=AZURE_CLI;";

    SQLRETURN result = SQLDriverConnectA(
        connection,
        NULL,
        (SQLCHAR*)connectionString,
        SQL_NTS,
        NULL,
        0,
        NULL,
        SQL_DRIVER_NOPROMPT);

    if (SQL_SUCCEEDED(result)) {
        SQLAllocHandle(SQL_HANDLE_STMT, connection, &statement);
        result = SQLExecDirectA(
            statement,
            (SQLCHAR*)"SELECT 'Hello from Fabric!' AS message",
            SQL_NTS);

        if (SQL_SUCCEEDED(result)) {
            char message[256];
            SQLLEN indicator;

            while (SQLFetch(statement) == SQL_SUCCESS) {
                SQLGetData(
                    statement,
                    1,
                    SQL_C_CHAR,
                    message,
                    sizeof(message),
                    &indicator);
                std::cout << message << std::endl;
            }
        }

        SQLFreeHandle(SQL_HANDLE_STMT, statement);
        SQLDisconnect(connection);
    }

    SQLFreeHandle(SQL_HANDLE_DBC, connection);
    SQLFreeHandle(SQL_HANDLE_ENV, environment);
    return 0;
}

Python-voorbeeld

import pyodbc

# Connection string with required parameters
connection_string = (
    "DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
    "WorkspaceId=<workspace-id>;"
    "LakehouseId=<lakehouse-id>;"
    "AuthFlow=AZURE_CLI;"
)

# Connect and execute query
conn = pyodbc.connect(connection_string, timeout=30)
cursor = conn.cursor()

cursor.execute("SELECT 'Hello from Fabric!' as message")
row = cursor.fetchone()
print(row.message)

conn.close()

.NET-voorbeeld

using System.Data.Odbc;

// Connection string with required parameters
string connectionString = 
    "DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};" +
    "WorkspaceId=<workspace-id>;" +
    "LakehouseId=<lakehouse-id>;" +
    "AuthFlow=AZURE_CLI;";

using var connection = new OdbcConnection(connectionString);
await connection.OpenAsync();

Console.WriteLine("Connected successfully!");

using var command = new OdbcCommand("SELECT 'Hello from Fabric!' as message", connection);
using var reader = await command.ExecuteReaderAsync();

if (await reader.ReadAsync())
{
    Console.WriteLine(reader.GetString(0));
}

Indeling van verbindingstekenreeks

Basisverbindingsreeks

Het Microsoft ODBC-stuurprogramma voor Microsoft Fabric Data Engineering maakt gebruik van de volgende verbindingsreeksindeling:

DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};<parameter1>=<value1>;<parameter2>=<value2>;...

Onderdelen van verbindingsreeks

Onderdeel Description Example
STUURPROGRAMMA ODBC-stuurprogramma-id {Microsoft ODBC Driver for Microsoft Fabric Data Engineering}
WorkspaceId Fabric-werkruimte-id (GUID) xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx
LakehouseId Fabric lakehouse-id (GUID) xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx
AuthFlow Verificatiemethode AZURE_CLI, INTERACTIVE, CLIENT_CREDENTIAL, CLIENT_CERTIFICATE, , ACCESS_TOKEN, FILE_TOKEN

Voorbeeld van verbindingsreeksen

Basisverbinding (Azure CLI-verificatie)

DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI

Met prestatieopties

DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;ReuseSession=true;LargeTableSupport=true;PageSizeBytes=18874368

Met logboekregistratie

DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;LogLevel=DEBUG;LogFile=odbc_driver.log

Met modus voor hoge gelijktijdigheid

DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;LivyMode=HighConcurrency;SessionTag=bi-dashboard

Zie de sectie High-Concurrency (HC) Mode voor volledige configuratierichtlijnen.

Authenticatie

Het Microsoft ODBC-stuurprogramma voor Microsoft Fabric Data Engineering ondersteunt meerdere verificatiemethoden via Microsoft Entra ID (voorheen Azure Active Directory). Verificatie wordt geconfigureerd met behulp van de AuthFlow parameter in de verbindingsreeks.

Verificatiemethoden

AuthFlow-waarde Description
CLIENT_CREDENTIAL (0) Serviceprincipe met cliëntgeheim. Aliasnaam: CLIENT_SECRET_CREDENTIAL.
BROWSER_BASED (1) Interactieve browsergebaseerde authenticatie. Aliasnaam: INTERACTIVE.
AZURE_CLI (2) Ontwikkeling met Azure CLI-credentials.
CLIENT_CERTIFICATE_CREDENTIAL (3) Dienstdirecteur met certificaat. Alias: CLIENT_CERTIFICATE.
AUTH_ACCESS_TOKEN (4) Vooraf verkregen houder toegangstoken. Alias: ACCESS_TOKEN.
FILE_TOKEN (5) Leet een authenticatietoken uit een bestand.

Je kunt authenticatiewaarden specificeren in snake_case met hoofdletters, PascalCase of in numerieke vorm. De driver accepteert ook korte aliassen zoals Browser, , , CLI, Certificate, Token, en FileInteractive. De bestuurder negeert onderscores bij het vergelijken van waarden.

Azure CLI-verificatie

Geschikt voor: Ontwikkeling en interactieve toepassingen

# Python Example
connection_string = (
    "DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
    "WorkspaceId=<workspace-id>;"
    "LakehouseId=<lakehouse-id>;"
    "AuthFlow=AZURE_CLI;"
    "Scope=https://api.fabric.microsoft.com/.default;"
)
conn = pyodbc.connect(connection_string)

vereisten:

  • Azure CLI geïnstalleerd: az --version
  • Ingelogd: az login

Interactieve browserverificatie

Geschikt voor: gebruikersgerichte toepassingen

# Python Example
connection_string = (
    "DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
    "WorkspaceId=<workspace-id>;"
    "LakehouseId=<lakehouse-id>;"
    "AuthFlow=INTERACTIVE;"
    "TenantId=<tenant-id>;"
    "Scope=https://api.fabric.microsoft.com/.default;"
)
conn = pyodbc.connect(connection_string)

Gedrag:

  • Hiermee opent u een browservenster voor gebruikersverificatie
  • Referenties worden in de cache opgeslagen voor volgende verbindingen

Verificatie van clientreferenties (service-principal)

Geschikt voor: Geautomatiseerde services en achtergrondtaken

connection_string = (
    "DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
    "WorkspaceId=<workspace-id>;"
    "LakehouseId=<lakehouse-id>;"
    "AuthFlow=CLIENT_CREDENTIAL;"
    f"TenantId={tenant_id};"
    f"ClientId={client_id};"
    f"ClientSecret={client_secret};"
)

Vereiste parameters

  • TenantId: Azure-tenant-id
  • ClientId: Toepassings-ID (client) van Microsoft Entra ID
  • ClientSecret: Clientgeheim van Microsoft Entra-id

Beste praktijken

  • Geheimen veilig opslaan (Azure Key Vault, omgevingsvariabelen)
  • Beheerde identiteiten gebruiken indien mogelijk
  • Geheimen regelmatig roteren

Verificatie op basis van certificaat

Geschikt voor: Bedrijfstoepassingen waarvoor verificatie op basis van certificaten is vereist

connection_string = (
    "DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
    "WorkspaceId=<workspace-id>;"
    "LakehouseId=<lakehouse-id>;"
    "AuthFlow=CLIENT_CERTIFICATE;"
    "TenantId=<tenant-id>;"
    "ClientId=<client-id>;"
    "CertificatePath=C:\\certs\\mycert.pfx;"
    "CertificatePassword=<password>;"
)

Vereiste parameters:

  • TenantId: Azure-tenant-id
  • ClientId: Applicatie-ID (client)
  • CertificatePath: Pad naar PFX-/PKCS12-certificaatbestand
  • CertificatePassword: Certificaatwachtwoord

Verificatie van toegangstokens

Geschikt voor: Scenario's voor aangepaste verificatie

# Acquire token through custom mechanism
access_token = acquire_token_from_custom_source()

connection_string = (
    "DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
    "WorkspaceId=<workspace-id>;"
    "LakehouseId=<lakehouse-id>;"
    "AuthFlow=ACCESS_TOKEN;"
    f"AccessToken={access_token};"
)

Authenticatie met bestandstoken

Gebruik bestandstokenauthenticatie voor containerisatieomgevingen en geautomatiseerde pijplijnen waarbij een ander proces een bearertoken schrijft naar het bekende tokenbestand van de driver:

connection_string = (
    "DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
    "WorkspaceId=<workspace-id>;"
    "LakehouseId=<lakehouse-id>;"
    "AuthFlow=FILE_TOKEN;"
)

De driver lost de tokenbestandslocatie op op Windows en Linux.

Cross-driver eigenschapsaliasen

De ODBC-driver accepteert geselecteerde ADONET- en JDBC-eigendomsnamen naast native ODBC-namen. Deze ondersteuning kan het wisselen van verbindingsstrings verminderen wanneer je tussen Fabric-drivers wisselt.

ADO.NET- of JDBC-eigenschap ODBC-equivalent
FabricWorkspaceID WorkspaceId
FabricLakehouseID LakehouseId
LivySessionTimeoutSeconds Time-out voor verbinding
LivyStatementTimeoutSeconds Time-out voor instructie
ConnectionPoolEnabled Pool ingeschakeld

De driver verwerkt 17 stuurprogramma-overstijgende aliassen bij het tot stand brengen van de verbinding.

Configuratieparameters

Benodigde parameters

Deze parameters moeten aanwezig zijn in elke verbindingsreeks:

Kenmerk Typologie Description Example
WorkspaceId UUID (universeel unieke identificator) Fabric-werkruimte-id 4bbf89a8-...
LakehouseId UUID (universeel unieke identificator) Fabric lakehouse-id d8faa650-...
AuthFlow Snaar / Touwtje Type verificatiestroom AZURE_CLI

Optionele parameters

Verbindingsinstellingen

Kenmerk Typologie Verstek Description
gegevensbank Snaar / Touwtje Geen Eerste database voor klassieke modus. HC-modus past dit niet automatisch toe; voer USE <database> uit na het maken van verbinding of gebruik volledig gekwalificeerde tabelnamen.
Scope Snaar / Touwtje https://api.fabric.microsoft.com/.default OAuth-bereik

Prestatie-instellingen

Kenmerk Typologie Verstek Description
Hergebruik sessie Booleaans true Bestaande Spark-sessie opnieuw gebruiken
OndersteuningVoorGroteTabellen Booleaans false Optimalisaties inschakelen voor grote resultatensets
EnableAsyncPrefetch Booleaans false Achtergrondgegevens vooraf ophalen
PageSizeBytes Integer 18874368 (18 MB) Paginaformaat voor paginering van resultaten (1-18 MB)

Instellingen voor logboekregistratie

Kenmerk Typologie Verstek Description
Logniveau Snaar / Touwtje INFO Logniveau: DEBUG, WARN, ERROR of INFO. Gebruik DEBUG voor gedetailleerde driverdiagnose.
Logbestand Snaar / Touwtje odbc_driver.log Pad naar logboekbestand (absoluut of relatief)

Proxy-instellingen

Kenmerk Typologie Verstek Description
UseProxy Booleaans false Proxy inschakelen
ProxyHost Snaar / Touwtje Geen Proxyhostnaam
ProxyPort Integer Geen Proxypoort
ProxyUsername Snaar / Touwtje Geen Gebruikersnaam voor proxyverificatie
ProxyPassword Snaar / Touwtje Geen Wachtwoord voor proxyverificatie

Instellingen voor hoge gelijktijdigheid (HC)

Gebruik deze parameters om high-concurrency (HC) modus in te schakelen en te configureren. HC-modus moet worden ingeschakeld. Als je niet instelt LivyMode of UseHighConcurrency, gebruikt de driver het klassieke pad voor één sessie. Voor richtlijnen en voorbeelden raadpleegt u High-concurrency (HC) mode.

Kenmerk Typologie Verstek Description
LivyMode Snaar / Touwtje Niet ingesteld Regelt het verkrijgen van sessies. Ondersteunde waarden zijn Classic, HighConcurrencyen Auto. Auto Gebruikt momenteel het klassieke pad.
UseHighConcurrency Booleaans false Schakelt HC-modus in als alternatief voor het instellen van LivyMode=HighConcurrency
SessionTag Snaar / Touwtje Geen Biedt een serverzijdige verpakkingshint. Verbindingen moeten een bijpassende server-side configuratie gebruiken om een warme Livy-sessie te delen.
IdempotencyKey Snaar / Touwtje Geen Biedt een door de client gegenereerde sleutel voor veilige nieuwe pogingen om HC te verkrijgen. De driver valideert de tekenset en registreert nooit de waarde.
EnvironmentId Snaar / Touwtje Geen Specificeert de Fabric-omgevingsidentificatie die wordt verzonden als spark.fabric.environmentDetails in de HC-acquisitieconfiguratie.
HeartbeatTimeoutInSecond Integer Standaardserver Stelt de inactiviteitstime-out van de HC-sessie aan de serverzijde in, in seconden. De waarde moet een positief geheel getal zijn.
AcquireTimeoutSeconds Integer 300 Bepaalt hoe lang de bestuurder wacht tot een HC-sessie de Idle staat bereikt, in seconden. De waarde moet een positief geheel getal zijn.
conf.<key> Snaar / Touwtje Geen Specificeert een Spark-configuratie-override die wordt verzonden in het HC-acquisitieverzoek. Bijvoorbeeld: conf.spark.sql.shuffle.partitions=200.

Modusprioriteit en validatie

  • LivyMode Heeft voorrang boven UseHighConcurrency wanneer je beide parameters instelt.
  • Parameterwaarden zijn niet hoofdlettergevoelig.
  • UseHighConcurrency accepteert true, 1, , yesof on om HC-modus in te schakelen. Het accepteert false, 0, , no, of off om HC-modus uit te schakelen.
  • Voor andere niet-lege waarden geeft een SQLDriverConnect foutmelding terug. DSN-only SQLConnect registreert de validatiefout en gebruikt het klassieke pad.

Compatibiliteitsinstellingen

De driver accepteert TenantPrincipal en PoolMax, inclusief hun omgevingsvariabele fallbacks, voor compatibiliteit met eerdere HC-configuraties. De driver parseert en valideert deze waarden, maar ze hebben geen invloed op het matchen van HC-sessies of de capaciteit van de runtimepool. Vertrouw er niet op voor huurdersisolatie of verbindingsbeperkingen.

Terugvalopties voor omgevingsvariabelen

De driver gebruikt de volgende omgevingsvariabelen alleen wanneer de bijbehorende DSN- of verbindingsstringparameter niet is ingesteld:

Omgevingsvariabele Verwijst naar
FABRIC_ODBC_USE_HC UseHighConcurrency
FABRIC_ODBC_WORKSPACE_ID WorkspaceId
FABRIC_ODBC_LAKEHOUSE_ID LakehouseId
FABRIC_ODBC_ENVIRONMENT_ID EnvironmentId
FABRIC_ODBC_SESSION_TAG SessionTag
FABRIC_ODBC_TENANT_PRINCIPAL TenantPrincipal (alleen compatibiliteit)
FABRIC_ODBC_HC_HEARTBEAT_SECONDS HeartbeatTimeoutInSecond
FABRIC_ODBC_HC_ACQUIRE_TIMEOUT AcquireTimeoutSeconds
FABRIC_ODBC_HC_POOL_MAX PoolMax (alleen compatibiliteit)

Voor FABRIC_ODBC_USE_HC herkent inschakeling alleen voor omgevingen true, 1 of yes (ongeacht hoofdletters en kleine letters). Andere waarden zorgen ervoor dat HC uitgeschakeld blijft. De on en off aliasen gelden alleen voor DSN- en verbindingsstringwaarden.

Omgevingsinstellingen

U kunt een Fabric omgevingsitem verbinden aan de Spark-sessie die door de driver is gestart. De bibliotheken, Spark-eigenschappen en variabelen van de geselecteerde omgeving worden automatisch toegepast wanneer de sessie wordt gemaakt.

Kenmerk Typologie Verstek Description
Omgevings-ID UUID (universeel unieke identificator) Geen Fabric omgevingsitem-id (GUID) die moet worden toegepast tijdens het maken van een Spark-sessie

Voorbeeld verbindingsreeks met een omgevingselement:

DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;EnvironmentId=<environment-id>

Opmerking

De omgeving wordt toegepast wanneer de Spark-sessie wordt gestart. Als u ook aangepaste Spark-configuratie-eigenschappen opgeeft, hebben eigenschappen op sessieniveau voorrang op de standaardinstellingen van de omgeving.

Aangepaste Spark-configuratie

U kunt spark-configuratie-eigenschappen rechtstreeks doorgeven in de verbindingsreeks. Elke parameter waaraan spark. wordt voorafgegaan, wordt automatisch toegepast op de Spark-sessie tijdens het maken, zodat u de standaardinstellingen voor werkruimten of runtime kunt overschrijven.

Voorbeeld van Spark-configuraties:

spark.sql.shuffle.partitions=200
spark.sql.adaptive.enabled=true
spark.sql.autoBroadcastJoinThreshold=10485760

Voorbeeld verbindingsreeks met aangepaste Spark-eigenschappen:

DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;spark.sql.shuffle.partitions=200;spark.sql.adaptive.enabled=true

Opmerking

Spark-configuratie-eigenschappen worden toegepast wanneer de sessie wordt gemaakt. Ze zijn van toepassing op alle query's die worden uitgevoerd binnen die sessie en overschrijven de standaardinstellingen voor de omgeving of runtime voor dezelfde eigenschappen.

Modus voor hoge gelijktijdigheid (HC)

Met de modus voor hoge gelijktijdigheid (HC) kunnen ODBC-verbindingen naar dezelfde werkruimte en hetzelfde lakehouse verbinding maken met gedeelde, actieve Livy Spark-sessies aan de serverzijde, in plaats van voor elke verbinding een afzonderlijk cluster in te richten. Gebruik het voor workloads zoals BI-dashboards, notebook-kernels en ETL-fan-out die veel kortstondige verbindingen openen en serverbeheerde Spark-capaciteit kunnen delen.

HC-modus moet worden ingeschakeld. Als je geen HC-instelling instelt, gebruikt de driver het klassieke pad voor één sessie.

Een verbindingsmodus kiezen

Gebruik HC-modus wanneer:

  • Je werklast opent veel kortstondige ODBC-verbindingen, bijvoorbeeld BI-dashboards, kernels van notebooks of ETL-fan-out.
  • Verbindingen richten zich op dezelfde werkruimte en lakehouse en kunnen een serverbeheerde Spark-sessie delen.
  • Het verminderen van de koude startlatentie per verbinding is belangrijk.

Gebruik de klassieke modus wanneer:

  • Elke verbinding vereist een geïsoleerde Spark-sessie vanwege verschillende Spark-configuraties of strikte resource-isolatie.
  • Het Fabric Livy-eindpunt voor de doelwerkruimte en het lakehouse biedt geen ondersteuning voor HC-modus.

Schakel de modus voor hoge gelijktijdigheid in

Voeg een parameter voor de modus voor hoge gelijktijdigheid toe aan de DSN of verbindingsreeks.

Aanbevolen: Set LivyMode

Gebruik LivyMode dit om expliciet de sessie-acquisitiemodus te selecteren:

LivyMode=HighConcurrency

Ondersteunde waarden zijn Classic, HighConcurrencyen Auto. Waarden zijn niet hoofdlettergevoelig. Auto Selecteert momenteel de klassieke modus.

Alternatief: Set UseHighConcurrency

Gebruik de Booleaanse instelling voor compatibiliteit met bestaande configuraties:

UseHighConcurrency=true

Om de high-concurrency-modus in te schakelen, gebruikt u true, 1, yes of on. Om het uit te schakelen, gebruik false, 0, no, of off. Waarden zijn niet hoofdlettergevoelig. SQLDriverConnect verwerpt andere niet-lege waarden met SQLSTATE HY024. DSN-only SQLConnect registreert de validatiefout en gebruikt de klassieke modus.

Opmerking

Als je beide parameters instelt, LivyMode krijgt voorrang boven UseHighConcurrency.

Vereiste parameters in HC-modus

HC-activatie vereist de volgende geldige identificaties:

Kenmerk Aantekeningen
WorkspaceId Moet een geldige Fabric workspace GUID zijn.
LakehouseId Moet een geldige Fabric lakehouse GUID zijn.

Neem het op SessionTag omdat het server-side matching voor warme sessies beïnvloedt.

Sessiekoppeling

HC-modus garandeert niet dat elke verbinding een bestaande sessie hergebruikt. Voor elk sessie-acquisitieverzoek stuurt de driver het volgende:

  • De SessionTag-waarde.
  • De effectieve Spark-configuratie, inclusief conf.* instellingen en EnvironmentId.

De Fabric Livy-dienst beoordeelt deze waarden en beslist of de verbinding aan een warme sessie wordt gekoppeld of een nieuwe sessie wordt aangemaakt. Om het hergebruik van sessies te verbeteren, gebruik consistente waarden over verbindingen die bedoeld zijn om serverbeheerde Spark-capaciteit te delen.

Voorbeeld van verbindingsreeksen

Minimale HC-verbinding (Azure CLI-verificatie):

DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;LivyMode=HighConcurrency;SessionTag=bi-dashboard

HC met aangepaste timeouts:

DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;LivyMode=HighConcurrency;SessionTag=etl-prod;AcquireTimeoutSeconds=180;HeartbeatTimeoutInSecond=600

HC met omgevingsvariabelen en overschrijvingen van de Spark-configuratie:

DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;LivyMode=HighConcurrency;EnvironmentId=<environment-id>;SessionTag=ml-team;conf.spark.sql.shuffle.partitions=200;conf.spark.executor.memory=8g

Python (pyodbc):

import pyodbc

conn = pyodbc.connect(
    "DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
    "WorkspaceId=<workspace-id>;"
    "LakehouseId=<lakehouse-id>;"
    "AuthFlow=AZURE_CLI;"
    "LivyMode=HighConcurrency;"
    "SessionTag=notebook-kernel"
)

Configureer HC-modus in een DSN

Je kunt HC-instellingen opslaan in een DSN in plaats van ze in elke verbindingsreeks te herhalen. Wanneer een verbindingsreeks geen waarde specificeert, leest de driver deze instellingen uit het DSN:

  • LivyMode
  • UseHighConcurrency
  • EnvironmentId
  • SessionTag
  • IdempotencyKey
  • HeartbeatTimeoutInSecond
  • AcquireTimeoutSeconds

Het stuurprogramma leest ook de instellingen TenantPrincipal en PoolMax die uitsluitend voor compatibiliteit zijn. Om deze instellingen op te slaan, bewerk je het DSN in odbcad32.exe of gebruik SQLWritePrivateProfileString. Gebruik de parameternamen in de HC-instellingentabel.

Belangrijk

De driver leest conf.* Spark-configuratieoverschrijvingen niet uit de DSN. Voeg ze toe aan de verbindingsreeks tijdens runtime of injecteer ze voordat je aanroeptSQLDriverConnect.

Schakel HC-modus uit

Je kunt het verkrijgen van nieuwe HC-sessies uitschakelen zonder het stuurprogramma opnieuw te implementeren. Gebruik de methode die overeenkomt met hoe je HC-modus hebt ingeschakeld:

bron voor HC-configuratie Hoe HC-modus uit te schakelen
Alleen omgevingsvariabele Stel FABRIC_ODBC_USE_HC=false, of verwijder de variabele.
DSN Stel LivyMode=Classicin. Alternatief verwijder LivyMode en zet UseHighConcurrency=false.
Verbindingsstring Stel LivyMode=Classic, of verwijder de HC-parameters.

Connection-string en DSN-instellingen krijgen voorrang boven de omgevingsvariabele fallback. Deze veranderingen hebben alleen invloed op nieuwe verbindingen. Bestaande HC-sessies gaan door tot ze worden uitgebracht.

Begrijp het uitvoerende gedrag van HC

  • Validatie:SQLDriverConnect verwerpt ongeldige HC Booleaanse en positieve-gehele getallen met SQLSTATE HY024. Het verwerpt een ongeldig(e) LivyMode en ongeldige of te grote waarden voor WorkspaceId, LakehouseId en IdempotencyKey met SQLSTATE HY000. Een te grote compatibiliteitswaarde TenantPrincipal resulteert ook in HY000. Voor DSN-only SQLConnect, registreert de driver gewone HC-validatiefouten en gebruikt de klassieke modus. Te grote beveiligingskritieke waarden zorgen er nog steeds voor dat de verbinding mislukt.
  • Gevoelige gegevens: De driver sluit andere gevoelige velden uit of verwijdert IdempotencyKey deze uit HC-logs en diagnostische output.
  • Annuleren: Het annuleren van een statement gebeurt coöperatief. Het serverwerk dat al in uitvoering is, wordt schoon afgerond in plaats van direct te worden beëindigd.
  • Stroomonderbraken: HC- en klassieke modi gebruiken aparte stroomonderbrekers. Het uitputten van de ene modus beïnvloedt de andere niet.
  • Initiële database: HC-verbindingen voeren de initiële USE instructie voor de Database parameter niet uit. Voer USE <database> uit nadat u verbinding hebt gemaakt of gebruik volledig gekwalificeerde tabelnamen.
  • Diagnostiek: Stel LogLevel=DEBUG in om het verkrijgen van HC, polling, vrijgave en beslissingen over fouttoewijzing te loggen. Voor gerichte probleemoplossing kun je LIVY_HC_VERBOSE=1 instellen op het opnemen van extra opgeschoonde HC HTTP-diagnostiek.

Configureer een DSN

Een systeem-DSN maken

  1. ODBC-beheerder openen

    %SystemRoot%\System32\odbcad32.exe
    
  2. Nieuwe systeem-DSN maken

    • Ga naar het tabblad Systeem-DSN
    • Selecteer 'Toevoegen'
    • Selecteer 'Microsoft ODBC-stuurprogramma voor Microsoft Fabric Data Engineering'
    • Selecteer Voltooien
  3. DSN-instellingen configureren

    • Naam van gegevensbron: voer een unieke naam in (bijvoorbeeld FabricODBC)
    • Beschrijving: Optionele beschrijving
    • Werkruimte-ID: GUID van uw Fabric-werkruimte
    • Lakehouse-id: Uw Fabric Lakehouse-GUID
    • Verificatie: verificatiemethode selecteren
    • Omgevings-id (optioneel): Voer de GUID in van het Fabric omgevingsitem voor koppeling tijdens het maken van de sessie
    • Livy-modus (optioneel): Ingesteld op HighConcurrency om HC-modus in te schakelen
    • Sessietag (optioneel): Voer een niet-gevoelig operationeel label in voor HC-sessiematching
    • Aanvullende instellingen configureren indien nodig
  4. Verbinding testen

    • Selecteer Verbinding testen om de instellingen te verifiëren
    • Selecteer OK om op te slaan

DSN gebruiken in toepassingen

# Python - Connect using DSN
conn = pyodbc.connect("DSN=FabricODBC")
// .NET - Connect using DSN
using var connection = new OdbcConnection("DSN=FabricODBC");
await connection.OpenAsync();

Voorbeelden van gebruik

Eenvoudige verbinding en opvraging

Python

import pyodbc

def main():
    connection_string = (
        "DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
        "WorkspaceId=<workspace-id>;"
        "LakehouseId=<lakehouse-id>;"
        "AuthFlow=AZURE_CLI;"
        "ReuseSession=true;"
    )
    
    conn = pyodbc.connect(connection_string, timeout=30)
    cursor = conn.cursor()
    
    print("Connected successfully!")
    
    # Show available tables
    print("\nAvailable tables:")
    cursor.execute("SHOW TABLES")
    for row in cursor.fetchall():
        print(f"  {row}")
    
    # Query data
    print("\nQuery results:")
    cursor.execute("SELECT * FROM employees LIMIT 10")
    
    # Print column names
    columns = [desc[0] for desc in cursor.description]
    print(f"Columns: {columns}")
    
    # Print rows
    for row in cursor.fetchall():
        print(row)
    
    conn.close()

if __name__ == "__main__":
    main()

.NET

using System.Data.Odbc;

class Program
{
    static async Task Main(string[] args)
    {
        string connectionString = 
            "DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};" +
            "WorkspaceId=<workspace-id>;" +
            "LakehouseId=<lakehouse-id>;" +
            "AuthFlow=AZURE_CLI;" +
            "ReuseSession=true;";

        using var connection = new OdbcConnection(connectionString);
        await connection.OpenAsync();
        
        Console.WriteLine("Connected successfully!");

        // Show available tables
        Console.WriteLine("\nAvailable tables:");
        using (var cmd = new OdbcCommand("SHOW TABLES", connection))
        using (var reader = await cmd.ExecuteReaderAsync())
        {
            while (await reader.ReadAsync())
            {
                Console.WriteLine($"  {reader.GetString(0)}");
            }
        }

        // Query data
        Console.WriteLine("\nQuery results:");
        using (var cmd = new OdbcCommand("SELECT * FROM employees LIMIT 10", connection))
        using (var reader = await cmd.ExecuteReaderAsync())
        {
            // Print column names
            var columns = new List<string>();
            for (int i = 0; i < reader.FieldCount; i++)
            {
                columns.Add(reader.GetName(i));
            }
            Console.WriteLine($"Columns: {string.Join(", ", columns)}");

            // Print rows
            while (await reader.ReadAsync())
            {
                var values = new object[reader.FieldCount];
                reader.GetValues(values);
                Console.WriteLine(string.Join("\t", values));
            }
        }
    }
}

Werken met grote resultatensets

import pyodbc

connection_string = (
    "DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
    "WorkspaceId=<workspace-id>;"
    "LakehouseId=<lakehouse-id>;"
    "AuthFlow=AZURE_CLI;"
    "LargeTableSupport=true;"
    "PageSizeBytes=18874368;"  # 18 MB pages
    "EnableAsyncPrefetch=1;"
)

conn = pyodbc.connect(connection_string)
cursor = conn.cursor()

# Execute large query
cursor.execute("SELECT * FROM large_table")

# Process in batches
row_count = 0
while True:
    rows = cursor.fetchmany(1000)  # Fetch 1000 rows at a time
    if not rows:
        break
    
    for row in rows:
        # Process row
        row_count += 1
        
    if row_count % 10000 == 0:
        print(f"Processed {row_count} rows")

print(f"Total rows processed: {row_count}")
conn.close()

Voer DML-instructies uit

bool executeDml(SQLHDBC connection, const char* sql, const char* description) {
    SQLHSTMT statement = SQL_NULL_HSTMT;
    SQLAllocHandle(SQL_HANDLE_STMT, connection, &statement);

    std::cout << "Executing: " << description << std::endl;
    SQLRETURN result = SQLExecDirectA(
        statement,
        (SQLCHAR*)sql,
        SQL_NTS);

    bool succeeded = SQL_SUCCEEDED(result);
    if (succeeded) {
        SQLLEN rowCount;
        SQLRowCount(statement, &rowCount);
        std::cout << "Rows affected: " << rowCount << std::endl;
    }

    SQLFreeHandle(SQL_HANDLE_STMT, statement);
    return succeeded;
}

Gebruik executeDml met INSERT, UPDATE, of DELETE statements. Het gerapporteerde aantal rijen hangt ervan af of het resultaat een aantal bijgewerkte rijen bevat dat door het stuurprogramma wordt herkend.

Schema-ontdekking

import pyodbc

conn = pyodbc.connect(connection_string)
cursor = conn.cursor()

# List all tables
print("Tables in current default schema / database:")
cursor.execute("SHOW TABLES")
tables = cursor.fetchall()
for table in tables:
    print(f"  {table}")

# Describe table structure
print("\nTable structure for 'employees':")
cursor.execute("DESCRIBE employees")
for col in cursor.fetchall():
    print(f"  {col}")

# List schemas (for multi-schema Lakehouses)
print("\nAvailable schemas:")
cursor.execute("SHOW SCHEMAS")
for db in cursor.fetchall():
    print(f"  {db}")

conn.close()

Koppeling van gegevenstypen

Het stuurprogramma wijst Spark SQL-gegevenstypen toe aan ODBC SQL-typen:

Spark SQL-type ODBC SQL-type C/C++ Type Python-type .NET-type
BOOLEAN SQL_BIT SQLCHAR bool bool
BYTE SQL_TINYINT SQLSCHAR int sbyte
KORTE SQL_SMALLINT SQLSMALLINT int short
INT SQL_INTEGER SQLINTEGER int int
LONG SQL_BIGINT SQLBIGINT int lang
FLOAT SQL_REAL SQLREAL zweven zweven
Dubbel SQL_DOUBLE SQLDOUBLE zweven dubbel
Decimaal SQL_DECIMAL SQLCHAR* decimal.Decimal decimal
STRING SQL_VARCHAR SQLCHAR* Str touw
VARCHAR(n) SQL_VARCHAR SQLCHAR* Str touw
CHAR(n) SQL_CHAR SQLCHAR* Str touw
BINARY SQL_VARBINARY SQLCHAR* bytes byte[]
DATE SQL_TYPE_DATE SQL_DATE_STRUCT datetime.date DateTime
TIMESTAMP SQL_TYPE_TIMESTAMP SQL_TIMESTAMP_STRUCT datetime.datetime DateTime
ARRAY SQL_VARCHAR SQLCHAR* str (JSON) touw
MAP SQL_VARCHAR SQLCHAR* str (JSON) touw
Structuur SQL_VARCHAR SQLCHAR* str (JSON) touw

Integratie van BI-hulpprogramma's

Microsoft Excel

  1. Excel openen -> gegevens -> Gegevens ophalen -> uit andere bronnen -> van ODBC
  2. Selecteer uw geconfigureerde DSN (bijvoorbeeld FabricODBC)
  3. Verifiëren als hierom wordt gevraagd
  4. Door tabellen bladeren en selecteren
  5. Gegevens laden in excel-werkblad

Power BI Desktop

  1. Power BI Desktop openen -> Gegevens ophalen -> ODBC
  2. Selecteer uw geconfigureerde DSN
  3. Bladeren in gegevenscatalogus en tabellen selecteren
  4. Gegevens naar behoefte transformeren
  5. Visualisaties maken

SQL Server Management Studio (gekoppelde server)

-- Create linked server
EXEC sp_addlinkedserver 
    @server = 'FABRIC_LINKED_SERVER',
    @srvproduct = 'Microsoft Fabric',
    @provider = 'MSDASQL',
    @datasrc = 'FabricODBC'

-- Configure RPC
EXEC master.dbo.sp_serveroption 
    @server = N'FABRIC_LINKED_SERVER',
    @optname = N'rpc out',
    @optvalue = N'true';

-- Query via linked server
SELECT * FROM OPENQUERY(FABRIC_LINKED_SERVER, 'SHOW TABLES');
SELECT * FROM OPENQUERY(FABRIC_LINKED_SERVER, 'SELECT * FROM employees LIMIT 20');

-- Execute statements
EXEC('SELECT * FROM employees LIMIT 10') AT FABRIC_LINKED_SERVER;

Probleemoplossingsproces

Deze sectie bevat richtlijnen voor het oplossen van veelvoorkomende problemen die kunnen optreden bij het gebruik van het Microsoft ODBC-stuurprogramma voor Microsoft Fabric Data Engineering.

Veelvoorkomende problemen

In de volgende secties worden veelvoorkomende problemen en hun oplossingen beschreven:

Verbindingsfouten

Probleem: Kan niet aansluiten op Fabric

Oplossingen:

  1. Controleer of werkruimte-ID en lakehouse-ID correcte GUID's zijn
  2. Azure CLI-verificatie controleren: az account show
  3. Zorg ervoor dat u over de juiste Fabric werkruimtemachtigingen beschikt
  4. Netwerkconnectiviteit en proxy-instellingen controleren

Authenticatiefouten

Probleem: verificatie mislukt met Azure CLI

Oplossingen:

  • Voer az login uit om referentiegegevens te vernieuwen
  • Controleer de juiste tenant: az account set --subscription <subscription-id>
  • Controleer de geldigheid van het token: az account get-access-token --resource https://api.fabric.microsoft.com

Querytime-outs

Probleem: Time-outs van query's in grote datasets

Oplossingen:

  • LargeTableSupport=true inschakelen
  • Aanpassen PageSizeBytes voor optimale segmentgrootte
  • Asynchrone prefetch inschakelen: EnableAsyncPrefetch=1
  • Gebruik LIMIT clausule om de resultaatgrootte te beperken

Logboekregistratie inschakelen

Bij het oplossen van problemen kan het inschakelen van gedetailleerde logboekregistratie u helpen bij het identificeren van de hoofdoorzaak van problemen. U kunt logboekregistratie inschakelen via de verbindingsreeks.

Gedetailleerde logboekregistratie inschakelen:

LogLevel=DEBUG;LogFile=C:\temp\odbc_driver_debug.log;

Logboekniveaus:

  • DEBUG: Gedetailleerde debug-informatie en het uitgebreidste logniveau voor het stuurprogramma
  • INFO: Algemene informatie (standaard)
  • WARN: alleen waarschuwingen
  • ERROR: alleen fouten

ODBC-tracering

Voor diagnostische gegevens op laag niveau kunt u Windows ODBC-tracering inschakelen om gedetailleerde ODBC-API-aanroepen en stuurprogrammagedrag vast te leggen. Vergeet niet om tracering uit te schakelen wanneer u niet nodig bent om optimale prestaties te behouden.

ODBC-tracering inschakelen:

  1. odbcad32.exe openen
  2. Ga naar het tabblad Tracering
  3. Pad naar traceringsbestand instellen (bijvoorbeeld C:\temp\odbctrace.log)
  4. Start nu met traceren
  5. Reproduceer het probleem
  6. Selecteer Nu stoppen met traceren