Microsoft ODBC-driver for Microsoft Fabric Data Engineering

ODBC (Open Database Connectivity) er en mye brukt standard som gjør det mulig for klientapplikasjoner å koble til og arbeide med data fra databaser og big data-plattformer.

Microsoft ODBC Driver for Fabric Data Engineering lar deg koble til, spørre og administrere Spark-arbeidsbelastninger i Fabric med påliteligheten og enkelheten til ODBC-standarden. Bygget på Fabric sine Livy-API-er, gir driveren sikker og fleksibel Spark SQL-tilkobling til dine C/C++, .NET, Python og andre ODBC-kompatible applikasjoner og BI-verktøy.

Viktige funksjoner

  • ODBC 3.x-kompatibel: Full implementering av ODBC 3.x-spesifikasjonen
  • Microsoft Entra ID autentisering: Flere autentiseringsstrømmer, inkludert Azure CLI, interaktiv, klientlegitimasjon, sertifikatbasert autentisering og tilgangstokenautentisering
  • Spark SQL-spørringsstøtte: Direkte kjøring av Spark SQL-setninger
  • Omfattende støtte for datatyper: Støtte for alle Spark SQL-datatyper inkludert komplekse typer (ARRAY, MAP, STRUCT)
  • Gjenbruk av sesjoner: Innebygd sesjonshåndtering for bedre ytelse
  • Høysamtidighetsmodus: Velg delte, varme server-side Livy-økter for å redusere tilkoblingsoppstartsforsinkelse og Spark-klyngens sprawl
  • Støtte for store tabeller: Optimalisert håndtering for store resultatsett med konfigurerbare sidestørrelser
  • Async prefetch: Bakgrunnsdatainnlasting for bedre ytelse
  • Proxy-støtte: HTTP-proxykonfigurasjon for bedriftsmiljøer
  • Multi-skjema lakehouse-støtte: Koble til spesifikt skjema i et lakehouse
  • OneLake-integrasjon: Få tilgang til lakehouse-data lagret i OneLake, inkludert tabeller på tvers av flere skjemaer, gjennom et samlet ODBC-grensesnitt uten separat lagringskonfigurasjon
  • Miljøelementer støtter: Legg Fabric miljøelementer under jobbkjøring for å bruke arbeidsområdebiblioteker, Spark-egenskaper og variabler på hver økt
  • Custom Spark-konfigurasjon: Send Spark-konfigurasjonsegenskaper direkte gjennom tilkoblingsstreng for å justere sesjonsatferden

Bemerkning

I åpen kildekode Apache Spark brukes database og skjema synonymt. For eksempel, å kjøre SHOW SCHEMAS eller SHOW DATABASES i en Fabric-notatbok gir samme resultat — en liste over alle skjemaer i lakehouse.

Forutsetninger

Før du bruker Microsoft ODBC-driveren for Microsoft Fabric Data Engineering, må du sørge for at du har:

  • Operativsystem: Windows 10/11 eller Windows Server 2016+
  • Fabric Access: Tilgang til et Fabric-arbeidsområde
  • Microsoft Entra ID legitimasjon: Passende legitimasjon for autentisering
  • Workspace- og lakehouse-ID-er: GUID-identiplatorer for din Fabric workspace og lakehouse
  • Azure CLI (valgfritt): Kreves for Azure CLI autentiseringsmetode

Nedlasting og MSI-installasjon

  1. Last ned Microsoft ODBC-driveren for Microsoft Fabric Data Engineering MSI-pakken
  2. Dobbeltklikk.MicrosoftFabricODBCDriver-2.0.msi
  3. Følg installasjonsguiden og godta lisensavtalen
  4. Velg installasjonsmappe (standard: C:\Program Files\Microsoft ODBC Driver for Microsoft Fabric Data Engineering\)
  5. Fullfør installasjonen

Stille installasjon

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

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

Bekreft installasjon

Etter installasjon, sjekk at driveren er registrert:

  1. Run odbcad32.exe (ODBC Data Source Administrator)
  2. Gå til fanen Drivere
  3. Sjekk at "Microsoft ODBC Driver for Microsoft Fabric Data Engineering" er oppført

Eksempel på hurtigstart

Dette eksempelet demonstrerer hvordan man kobler til Fabric og kjører en spørring ved hjelp av Microsoft ODBC Driver for Microsoft Fabric Data Engineering. Før du kjører denne koden, sørg for at du har fullført forutsetningene og installert driveren.

C/C++-eksempel

#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-eksempel

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-eksempel

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));
}

Tilkoblingsstrengformat

Grunnleggende tilkoblingsstreng

Microsoft ODBC-driveren for Microsoft Fabric Data Engineering bruker følgende tilkoblingsstrengformat:

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

Tilkoblingsstrengkomponenter

Komponent Beskrivelse Eksempel
FØRER ODBC-driveridentifikator {Microsoft ODBC Driver for Microsoft Fabric Data Engineering}
WorkspaceId Fabric workspace-identifikator (GUID) xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx
LakehouseId Fabric lakehouse-identifikator (GUID) xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx
AuthFlow Godkjenningsmetode AZURE_CLI, INTERACTIVE, , CLIENT_CREDENTIALCLIENT_CERTIFICATE, ACCESS_TOKEN, ,FILE_TOKEN

Eksempler på tilkoblingsstrenger

Basic connection (Azure CLI authentication)

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

Med ytelsesalternativer

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

Med tømmerhogst

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

Med høy samtidighetsmodus

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

Se seksjonen omHigh-Concurrency (HC) Mode for fullstendig konfigurasjonsveiledning.

Autentisering

Microsoft ODBC-driveren for Microsoft Fabric Data Engineering støtter flere autentiseringsmetoder gjennom Microsoft Entra ID (tidligere Azure Active Directory). Autentisering konfigureres ved å bruke parameteren AuthFlow i tilkoblingsstrengen.

Godkjenningsmetoder

AuthFlow-verdi Beskrivelse
CLIENT_CREDENTIAL (0) Tjenesteansvarlig med klienthemmelighet. Alias: CLIENT_SECRET_CREDENTIAL.
BROWSER_BASED (1) Interaktiv nettleserbasert autentisering. Alias: INTERACTIVE.
AZURE_CLI (2) Utvikling ved bruk av Azure CLI-legitimasjoner.
CLIENT_CERTIFICATE_CREDENTIAL (3) Tjenesteleder med sertifikat. Alias: CLIENT_CERTIFICATE.
AUTH_ACCESS_TOKEN (4) Forhåndservervet innehavertilgangstoken. Alias: ACCESS_TOKEN.
FILE_TOKEN (5) Leser en autentiseringstoken fra en fil.

Du kan spesifisere autentiseringsverdier med store bokstaver, Pascal-bokstaver eller numerisk form. Driveren aksepterer også korte aliaser som Browser, , Interactive, CLI, CertificateToken, og File. Driveren ignorerer understreker når den sammenligner verdier.

Azure CLI-autentisering

Best for: Utvikling og interaktive applikasjoner

# 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)

Forutsetninger:

  • Azure CLI installert: az --version
  • Innlogget: az login

Interaktiv nettleserautentisering

Best for: Brukerrettede applikasjoner

# 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)

Virkemåte:

  • Åpner et nettleservindu for brukerautentisering
  • Legitimasjon caches for påfølgende tilkoblinger

Autentisering av klientlegitimasjon (tjenesteprincipal)

Best for: Automatiserte tjenester og bakgrunnsjobber

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};"
)

Nødvendige parametere

  • TenantId: Azure leietaker-ID
  • ClientId: Applikasjons-(klient-)ID fra Microsoft Entra-ID
  • ClientSecret: Klienthemmelighet fra Microsoft Entra-ID

Anbefalt fremgangsmåte

  • Lagre hemmeligheter sikkert (Azure Key Vault, miljøvariabler)
  • Bruk administrerte identiteter når det er mulig
  • Roter hemmeligheter regelmessig

Sertifikatbasert godkjenning

Best for: Bedriftsapplikasjoner som krever sertifikatbasert autentisering

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>;"
)

Nødvendige parametere:

  • TenantId: Azure leietaker-ID
  • ClientId: Applikasjons-ID (klient-ID)
  • CertificatePath: Vei til PFX/PKCS12-sertifikatfilen
  • CertificatePassword: Sertifikatpassord

Autentisering av tilgangstoken

Best for: Tilpassede autentiseringsscenarier

# 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};"
)

Filtokenautentisering

Bruk filtokenautentisering for containeriserte miljøer og automatiserte pipelines hvor en annen prosess skriver en bærertoken til driverens velkjente tokenfil:

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

Driveren løser tokenfilens plassering på Windows og Linux.

Kryssdriver-egenskapsaliaser

ODBC-driveren aksepterer utvalgte ADO.NET- og JDBC-eiendomsnavn i tillegg til native ODBC-navn. Denne støtten kan redusere endringer i forbindelsesstrenger når du bytter mellom Fabric-drivere.

ADO.NET- eller JDBC-eiendom ODBC-ekvivalent
FabricWorkspaceID WorkspaceId
FabricLakehouseID LakehouseId
LivySessionTimeoutSeconds Tidsavbrudd for tilkobling
LivyStatementTimeoutSeconds Oppgavetidsavbrudd
ConnectionPoolEnabled Pool aktivert

Driveren løser 17 kryssdriver-aliaser ved tilkoblingstidspunktet.

Konfigurasjonsparametere

Påkrevde parametere

Disse parameterne må være til stede i hver tilkoblingsstreng:

Parameter Type Beskrivelse Eksempel
WorkspaceId UUID Identifikator for stoffarbeidsområde 4bbf89a8-...
LakehouseId UUID Fabric lakehouse-identifikator d8faa650-...
AuthFlow String Autentiseringsflyttype AZURE_CLI

Valgfrie parametere

Tilkoblingsinnstillinger

Parameter Type Default Beskrivelse
Database String Ingen Innledende database for klassisk modus. HC-modus aktiverer det ikke automatisk; kjør USE <database> etter tilkobling eller bruk fullt kvalifiserte tabellnavn.
Område String https://api.fabric.microsoft.com/.default OAuth-omfang

Ytelsesinnstillinger

Parameter Type Default Beskrivelse
ReuseSession boolsk true Gjenbruk eksisterende Spark-økt
LargeTableSupport boolsk false Aktiver optimaliseringer for store resultatsett
EnableAsyncPrefetch boolsk false Aktiver forhåndshenting av bakgrunnsdata
PageSizeBytes Integer 18874368 (18 MB) Sidestørrelse for resultatpaginering (1-18 MB)

Loggingsinnstillinger

Parameter Type Default Beskrivelse
LogLevel String INFO Log-nivå: DEBUG, INFO, WARN, eller ERROR. Bruk DEBUG for detaljerte driverdiagnostikk.
Loggfil String odbc_driver.log Loggfilsti (absolutt eller relativ)

Proxy-innstillinger

Parameter Type Default Beskrivelse
UseProxy boolsk false Aktiver proxy
ProxyHost String Ingen Proxy-vertsnavn
ProxyPort Integer Ingen Proxy-port
ProxyUsername String Ingen Proxy-autentiseringsbrukernavn
ProxyPassword String Ingen Proxy-autentiseringspassord

Høy-samtidighetsinnstillinger (HC)

Bruk disse parameterne for å aktivere og konfigurere høy-samtidighet (HC)-modus. HC-modus er frivillig. Hvis du ikke setter LivyMode eller UseHighConcurrency, bruker driveren den klassiske enkeltsesjonsruten. For veiledning og eksempler, se High-concurrency (HC)-modus.

Parameter Type Default Beskrivelse
LivyMode String Ikke angitt Kontrollerer innhenting av økter. Støttede verdier er Classic, HighConcurrencyog Auto. Auto Bruker for øyeblikket den klassiske stien.
UseHighConcurrency boolsk false Aktiverer HC-modus som et alternativ til å sette LivyMode=HighConcurrency.
SessionTag String Ingen Gir et serverside-pakketips. Tilkoblinger må bruke tilsvarende serverside-konfigurasjon for å dele en varm Livy-økt.
IdempotencyKey String Ingen Gir en klientgenerert nøkkel for sikre HC-anskaffelsesforsøk. Driveren validerer tegnsettet og logger aldri verdien.
EnvironmentId String Ingen Spesifiserer Fabric-miljøidentifikatoren som sendes som spark.fabric.environmentDetails i HC-anskaffelseskonfigurasjonen.
HeartbeatTimeoutInSecond Integer Serverstandard Setter server-side HC-sesjonens inaktive timeout, på sekunder. Verdien må være et positivt heltall.
AcquireTimeoutSeconds Integer 300 Setter hvor lenge sjåføren venter på at en HC-økt skal nå tilstanden Idle , i sekunder. Verdien må være et positivt heltall.
conf.<key> String Ingen Spesifiserer en Spark-konfigurasjonsoverstyring sendt i HC-anskaffelsesforespørselen. Eksempel: conf.spark.sql.shuffle.partitions=200.

Modusforrang og validering

  • LivyMode Har forrang over UseHighConcurrency når du setter begge parameterne.
  • Parameterverdiene er ikke små og små og mellombokstaver.
  • UseHighConcurrency aksepterer true, 1, yes, eller on for å aktivere HC-modus. Den godtar false, 0, , noeller off å deaktivere HC-modus.
  • For andre ikke-tomme verdier returnerer SQLDriverConnect en feil. DSN-only SQLConnect logger valideringsfeilen og bruker den klassiske stien.

Kompatibilitetsinnstillinger

Driveren aksepterer TenantPrincipal og PoolMax, inkludert deres miljøvariable fallbacks, for kompatibilitet med tidligere HC-konfigurasjoner. Driveren parser og validerer disse verdiene, men de påvirker ikke HC-sesjonsmatching eller kapasiteten i kjøretidspoolen. Ikke stol på dem for leietakerisolasjon eller tilkoblingsbegrensninger.

Miljøvariable fallbacks

Driveren bruker følgende miljøvariabler kun når den tilsvarende DSN- eller tilkoblingsstrengparameteren ikke er satt:

Miljøvariabel Kart til
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 (kun kompatibilitet)
FABRIC_ODBC_HC_HEARTBEAT_SECONDS HeartbeatTimeoutInSecond
FABRIC_ODBC_HC_ACQUIRE_TIMEOUT AcquireTimeoutSeconds
FABRIC_ODBC_HC_POOL_MAX PoolMax (kun kompatibilitet)

For FABRIC_ODBC_USE_HC, gjenkjenner truekun miljøaktivering , 1, eller yes (kasus-ufølsom). Andre verdier gjør HC deaktivert. Og onoff aliasene gjelder kun for DSN- og tilkoblingsstrengverdier.

Miljøinnstillinger

Du kan knytte et Fabric-miljøobjekt til Spark-økten som startet av driveren. De valgte miljøbibliotekene, Spark-egenskapene og variablene brukes automatisk når sesjonen opprettes.

Parameter Type Default Beskrivelse
EnvironmentId UUID Ingen Fabric environment item identifier (GUID) som brukes under opprettelsen av Spark-sesjoner

Eksempel tilkoblingsstreng med et miljøobjekt:

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

Bemerkning

Miljøet aktiveres når Spark-økten starter. Hvis du også spesifiserer egendefinerte Spark-konfigurasjonsegenskaper, får sesjonsnivå-egenskaper forrang over miljøstandardene.

Egendefinert Spark-konfigurasjon

Du kan sende Spark-konfigurasjonsegenskaper direkte inn i tilkoblingsstreng. Alle parametere som er prefikset med spark. brukes automatisk på Spark-sesjonen ved opprettelsestidspunktet, slik at du kan overstyre arbeidsområdets eller kjøretidsstandardene.

Eksempler på Spark-konfigurasjoner:

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

Eksempel tilkoblingsstreng med egendefinerte Spark-egenskaper:

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

Bemerkning

Spark-konfigurasjonsegenskaper anvendes når sesjonen opprettes. De gjelder for alle forespørsler som kjøres i den økten og overstyrer miljø- eller kjøretidsstandarder for de samme egenskapene.

Høy-samtidighet (HC) modus

High-concurrency (HC)-modus lar ODBC-tilkoblinger til samme arbeidsområde og lakehouse koble seg til delte, varme server-side Livy Spark-økter i stedet for å opprette en separat klynge for hver tilkobling. Bruk det til arbeidsbelastninger som BI-dashbord, notebook-kjerner og ETL-fan-out som åpner mange kortvarige tilkoblinger og kan dele serveradministrert Spark-kapasitet.

HC-modus er frivillig. Hvis du ikke konfigurerer en HC-innstilling, bruker driveren den klassiske enkeltsesjonsstien.

Velg en tilkoblingsmodus

Bruk HC-modus når:

  • Arbeidsmengden din åpner mange kortvarige ODBC-tilkoblinger, som BI-dashbord, notebook-kjerner eller ETL-fan-out.
  • Tilkoblinger retter seg mot samme arbeidsområde og lakehouse, og kan dele en serverstyrt Spark-økt.
  • Å redusere kaldstartsforsinkelse per tilkobling er viktig.

Bruk klassisk modus når:

  • Hver tilkobling krever en isolert Spark-økt på grunn av ulike Spark-konfigurasjoner eller streng ressursisolasjon.
  • Fabric Livy-endepunktet for målarbeidsområdet og lakehouse støtter ikke HC-modus.

Aktiver høy-samtidighetsmodus

Legg til en høy-samtidighetsmodusparameter til DSN- eller tilkoblingsstreng.

Anbefalt: Sett LivyMode

Bruk LivyMode for å velge sesjonsinnhentingsmodus eksplisitt:

LivyMode=HighConcurrency

Støttede verdier er Classic, HighConcurrencyog Auto. Verdier er ikke små og små bokstaver. Auto Velger for øyeblikket klassisk modus.

Alternativ: Sett UseHighConcurrency

Bruk Boolean-innstillingen for kompatibilitet med eksisterende konfigurasjoner:

UseHighConcurrency=true

For å aktivere høy-samtidighetsmodus, bruk true, 1, yes, eller on. For å deaktivere den, bruk false, 0, no, eller off. Verdier er ikke små og små bokstaver. SQLDriverConnect avviser andre ikke-tomme verdier med SQLSTATE HY024. DSN-only SQLConnect logger valideringsfeilen og bruker klassisk modus.

Bemerkning

Hvis du setter begge parameterne, LivyMode får forrang over UseHighConcurrency.

Nødvendige parametere i HC-modus

HC-aktivering krever følgende gyldige identifikatorer:

Parameter Merknader
WorkspaceId Må være en gyldig Fabric workspace GUID.
LakehouseId Må være en gyldig Fabric lakehouse GUID.

Inkluder SessionTag fordi det påvirker server-side matching for varme økter.

Sesjonsmatching

HC-modus garanterer ikke at hver tilkobling gjenbruker en eksisterende økt. For hver forespørsel om sesjonsinnhenting sender driveren:

  • Verdien SessionTag .
  • Den effektive Spark-konfigurasjonen, inkludert conf.* innstillinger og EnvironmentId.

Fabric Livy-tjenesten vurderer disse verdiene og bestemmer om forbindelsen skal knyttes til en varm sesjon eller opprettes en ny. For å forbedre gjenbruk av sesjoner, bruk konsistente verdier på tvers av tilkoblinger som er ment å dele serveradministrert Spark-kapasitet.

Eksempler på tilkoblingsstrenger

Minimal HC connection (Azure CLI auth):

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

HC med justerte 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 med et miljø og Spark-konferanseoverstyringer:

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"
)

Konfigurer HC-modus i en DSN

Du kan lagre HC-innstillinger i en DSN i stedet for å gjenta dem i hver tilkoblingsstreng. Når en tilkoblingsstreng ikke spesifiserer en verdi, leser driveren disse innstillingene fra DSN:

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

Føreren leser også kun TenantPrincipal kompatibilitet og PoolMax innstillinger. For å lagre disse innstillingene, rediger DSN inn odbcad32.exe eller bruk SQLWritePrivateProfileString. Bruk parameternavnene i HC-innstillingstabellen.

Viktig!

Driveren leser conf.* ikke Spark-konfigurasjonsoverstyringer fra DSN. Legg dem til tilkoblingsstreng under kjøring eller injiser dem før du kaller SQLDriverConnect.

Deaktiver HC-modus

Du kan deaktivere nye HC-sesjonsinnhentinger uten å deployere driveren på nytt. Bruk metoden som tilsvarer hvordan du aktiverte HC-modus:

HC-konfigurasjonskilde Hvordan deaktivere HC-modus
Kun miljøvariabel Sett FABRIC_ODBC_USE_HC=false, eller fjern variabelen.
DSN Sett LivyMode=Classic. Alternativt, fjern LivyMode og sett UseHighConcurrency=false.
Tilkoblingsstrengen Sett LivyMode=Classic, eller fjern HC-parametrene.

Tilkoblingsstreng- og DSN-innstillinger har forrang over miljøvariabel-fallback. Disse endringene gjelder kun nye forbindelser. Eksisterende HC-økter fortsetter til de slippes.

Forstå HC sin kjøretidsoppførsel

  • Validering:SQLDriverConnect avviser ugyldige HC boolske og positive heltallsverdier med SQLSTATE HY024. Den avviser en ugyldig LivyMode og ugyldig eller overdimensjonert WorkspaceId, LakehouseId, og IdempotencyKey verdier med SQLSTATE HY000. En overdimensjonert kompatibilitetsverdi TenantPrincipal returnerer HY000også . For kun SQLConnectDSN logger driveren vanlige HC-valideringsfeil og bruker klassisk modus. Overdimensjonerte sikkerhetsfølsomme verdier feiler fortsatt forbindelsen.
  • Sensitive data: Driveren ekskluderer eller fjerner IdempotencyKey andre sensitive felt fra HC-logger og diagnostiske resultater.
  • Avbestilling: Avbestilling av kontoutskrift er samarbeidsvillig. Serverarbeid som allerede pågår avsluttes rent i stedet for å bli avsluttet umiddelbart.
  • Sikringer: HC- og klassiske moduser bruker separate sikringer. Å bruke ut én modus påvirker ikke den andre.
  • Startdatabase: HC-tilkoblinger utfører ikke den opprinnelige USE setningen for parameteren Database . Kjør USE <database> etter tilkobling eller bruk fullt kvalifiserte tabellnavn.
  • Diagnostikk: Sett LogLevel=DEBUG til å loggføre beslutninger om HC-innhenting, polling, frigivelse og feilkartlegging. For fokusert feilsøking, sett LIVY_HC_VERBOSE=1 til å inkludere ekstra renset HC HTTP-diagnostikk.

Konfigurer en DSN

Opprett et system-DSN

  1. Åpen ODBC-administrator

    %SystemRoot%\System32\odbcad32.exe
    
  2. Create New System DSN

    • Gå til fanen "System DSN"
    • Velg "Legg til"
    • Velg "Microsoft ODBC Driver for Microsoft Fabric Data Engineering"
    • Velg "Fullfør"
  3. Konfigurer DSN-innstillinger

    • Datakildenavn: Skriv inn et unikt navn (f.eks. FabricODBC)
    • Beskrivelse: Valgfri beskrivelse
    • Workspace ID: Din Fabric workspace GUID
    • Lakehouse ID: Din Fabric lakehouse GUID
    • Autentisering: Velg autentiseringsmetode
    • Environment ID (valgfritt): Skriv inn GUID-en til det Fabric miljøelementet som skal tilknyttes under sesjonsopprettelsen
    • Livy-modus (valgfritt): Satt til HighConcurrency for å aktivere HC-modus
    • Sesjonstagg (valgfritt): Skriv inn en ikke-sensitiv operasjonell etikett for HC-sesjonsmatching
    • Konfigurer ekstra innstillinger etter behov
  4. Testtilkobling

    • Velg "Test tilkobling" for å verifisere innstillinger
    • Velg "OK" for å lagre

Bruk DSN i applikasjoner

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

Brukseksempler

Grunnleggende tilkobling og spørring

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));
            }
        }
    }
}

Arbeid med store resultatsett

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()

Kjør DML-setninger

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;
}

Bruk executeDml med INSERT, UPDATE, eller DELETE setninger. Den rapporterte radtellingen avhenger av om resultatet inneholder en oppdateringstelling som er gjenkjent av driveren.

Skjemaoppdagelse

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()

Tilordning av datatype

Driveren tilordner Spark SQL-datatyper til ODBC SQL-typer:

Spark SQL Type ODBC SQL Type C/C++-typen Python Type .NET-type
BOOLSK SQL_BIT SQLCHAR bool bool
BYTE SQL_TINYINT SQLSCHAR int sbyte
SHORT SQL_SMALLINT SQLSMALLINT int kort
INT SQL_INTEGER SQLINTEGER int int
LANG SQL_BIGINT SQLBIGINT int long
FLYTE SQL_REAL SQLREAL float float
DOBBEL SQL_DOUBLE SQLDOUBLE float dobbel
DESIMAL SQL_DECIMAL SQLCHAR* desimal. Desimal desimal
STRENG SQL_VARCHAR SQLCHAR* Str streng
VARCHAR(n) SQL_VARCHAR SQLCHAR* Str streng
CHAR(n) SQL_CHAR SQLCHAR* Str streng
BINÆR SQL_VARBINARY SQLCHAR* Bytes byte[]
DATO SQL_TYPE_DATE SQL_DATE_STRUCT datetime.date Date/klokkeslett
TIDSSTEMPEL SQL_TYPE_TIMESTAMP SQL_TIMESTAMP_STRUCT datetime.datetime Date/klokkeslett
MATRISE SQL_VARCHAR SQLCHAR* str (JSON) streng
KART SQL_VARCHAR SQLCHAR* str (JSON) streng
STRUCT SQL_VARCHAR SQLCHAR* str (JSON) streng

BI-verktøyintegrasjon

Microsoft Excel

  1. Åpne Excel -> Data -> Hent data -> Fra andre kilder -> Fra ODBC
  2. Velg din konfigurerte DSN (f.eks. FabricODBC)
  3. Autentiser hvis du blir bedt om det
  4. Bla gjennom og velg tabeller
  5. Last inn data i Excel-arbeidsarket

Power BI Desktop

  1. Åpne Power BI Desktop -> Hent data -> ODBC
  2. Velg din konfigurerte DSN
  3. Bla gjennom datakatalogen og velg tabeller
  4. Transformér data etter behov
  5. Opprett visualiseringer

SQL Server Management Studio (Lenket 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;

Feilsøking

Denne delen gir veiledning for å løse vanlige problemer du kan støte på når du bruker Microsoft ODBC-driveren for Microsoft Fabric Data Engineering.

Vanlige problemer

Følgende avsnitt beskriver vanlige problemer og deres løsninger:

Tilkoblingsfeil

Problem: Kan ikke koble til Fabric

Løsninger:

  1. Sjekk at arbeidsplass-ID og lakehouse-ID er korrekte GUID-er
  2. Sjekk Azure CLI autentisering: az account show
  3. Sørg for at du har riktige Fabric-arbeidsområdetillatelser
  4. Sjekk nettverkstilkobling og proxyinnstillinger

Godkjenningsfeil

Problem: Autentisering feiler med Azure CLI

Løsninger:

  • Kjør az login for å oppdatere legitimasjonen
  • Sjekk riktig leietaker: az account set --subscription <subscription-id>
  • Sjekk tokenets gyldighet: az account get-access-token --resource https://api.fabric.microsoft.com

Spørringstidsavbrudd

Problem: Forespørsler går ut på store tabeller

Løsninger:

  • Aktiver LargeTableSupport=true
  • Juster PageSizeBytes for optimal chunk-størrelse
  • Aktiver asynkron prefetch: EnableAsyncPrefetch=1
  • Bruk LIMIT klausulen for å begrense resultatstørrelsen

Aktiver logging

Når du feilsøker problemer, kan det å aktivere detaljert logging hjelpe deg med å identifisere rotårsaken til problemene. Du kan aktivere logging gjennom tilkoblingsstrengen.

For å muliggjøre detaljert loggføring:

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

Loggnivåer:

  • DEBUG: Detaljert informasjon om feilsøking og det mest omfattende driverloggnivået
  • INFO: Generell informasjon (standard)
  • WARN: Kun advarsler
  • ERROR: Kun feil

ODBC-sporing

For lavnivådiagnostikk kan du aktivere Windows ODBC-sporing for å fange detaljerte ODBC API-kall og driveroppførsel. Husk å slå av sporing når det ikke er nødvendig for å opprettholde optimal ytelse.

For å aktivere ODBC-sporing:

  1. Åpne odbcad32.exe
  2. Gå til fanen "Tracing"
  3. Sett sporfilsti (f.eks. C:\temp\odbctrace.log)
  4. Velg "Start sporing nå"
  5. Reproduser utgaven
  6. Velg "Stopp sporing nå"