Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
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
- Last ned Microsoft ODBC-driveren for Microsoft Fabric Data Engineering MSI-pakken
- Dobbeltklikk.
MicrosoftFabricODBCDriver-2.0.msi - Følg installasjonsguiden og godta lisensavtalen
- Velg installasjonsmappe (standard:
C:\Program Files\Microsoft ODBC Driver for Microsoft Fabric Data Engineering\) - 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:
- Run
odbcad32.exe(ODBC Data Source Administrator) - Gå til fanen Drivere
- 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
-
LivyModeHar forrang overUseHighConcurrencynår du setter begge parameterne. - Parameterverdiene er ikke små og små og mellombokstaver.
-
UseHighConcurrencyaksepterertrue,1,yes, elleronfor å aktivere HC-modus. Den godtarfalse,0, ,noelleroffå deaktivere HC-modus. - For andre ikke-tomme verdier returnerer
SQLDriverConnecten feil. DSN-onlySQLConnectlogger 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 ogEnvironmentId.
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:
LivyModeUseHighConcurrencyEnvironmentIdSessionTagIdempotencyKeyHeartbeatTimeoutInSecondAcquireTimeoutSeconds
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:
SQLDriverConnectavviser ugyldige HC boolske og positive heltallsverdier med SQLSTATEHY024. Den avviser en ugyldigLivyModeog ugyldig eller overdimensjonertWorkspaceId,LakehouseId, ogIdempotencyKeyverdier med SQLSTATEHY000. En overdimensjonert kompatibilitetsverdiTenantPrincipalreturnererHY000også . For kunSQLConnectDSN logger driveren vanlige HC-valideringsfeil og bruker klassisk modus. Overdimensjonerte sikkerhetsfølsomme verdier feiler fortsatt forbindelsen. -
Sensitive data: Driveren ekskluderer eller fjerner
IdempotencyKeyandre 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
USEsetningen for parameterenDatabase. KjørUSE <database>etter tilkobling eller bruk fullt kvalifiserte tabellnavn. -
Diagnostikk: Sett
LogLevel=DEBUGtil å loggføre beslutninger om HC-innhenting, polling, frigivelse og feilkartlegging. For fokusert feilsøking, settLIVY_HC_VERBOSE=1til å inkludere ekstra renset HC HTTP-diagnostikk.
Konfigurer en DSN
Opprett et system-DSN
Åpen ODBC-administrator
%SystemRoot%\System32\odbcad32.exeCreate New System DSN
- Gå til fanen "System DSN"
- Velg "Legg til"
- Velg "Microsoft ODBC Driver for Microsoft Fabric Data Engineering"
- Velg "Fullfør"
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
HighConcurrencyfor å aktivere HC-modus - Sesjonstagg (valgfritt): Skriv inn en ikke-sensitiv operasjonell etikett for HC-sesjonsmatching
- Konfigurer ekstra innstillinger etter behov
-
Datakildenavn: Skriv inn et unikt navn (f.eks.
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
- Åpne Excel -> Data -> Hent data -> Fra andre kilder -> Fra ODBC
- Velg din konfigurerte DSN (f.eks.
FabricODBC) - Autentiser hvis du blir bedt om det
- Bla gjennom og velg tabeller
- Last inn data i Excel-arbeidsarket
Power BI Desktop
- Åpne Power BI Desktop -> Hent data -> ODBC
- Velg din konfigurerte DSN
- Bla gjennom datakatalogen og velg tabeller
- Transformér data etter behov
- 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:
- Sjekk at arbeidsplass-ID og lakehouse-ID er korrekte GUID-er
- Sjekk Azure CLI autentisering:
az account show - Sørg for at du har riktige Fabric-arbeidsområdetillatelser
- Sjekk nettverkstilkobling og proxyinnstillinger
Godkjenningsfeil
Problem: Autentisering feiler med Azure CLI
Løsninger:
- Kjør
az loginfor å 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
PageSizeBytesfor optimal chunk-størrelse - Aktiver asynkron prefetch:
EnableAsyncPrefetch=1 - Bruk
LIMITklausulen 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:
- Åpne
odbcad32.exe - Gå til fanen "Tracing"
- Sett sporfilsti (f.eks.
C:\temp\odbctrace.log) - Velg "Start sporing nå"
- Reproduser utgaven
- Velg "Stopp sporing nå"