Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
ODBC (Open Database Connectivity) er en bredt anvendt standard, der gør det muligt for klientapplikationer at forbinde til og arbejde med data fra databaser og big data-platforme.
Microsoft ODBC Driver for Fabric Data Engineering lader dig forbinde, forespørge og administrere Spark-arbejdsbelastninger i Fabric med pålideligheden og enkelheden fra ODBC-standarden. Drevet er bygget på Fabric's Livy API'er og leverer sikker og fleksibel Spark SQL-forbindelse til dine C/C++, .NET, Python og andre ODBC-kompatible applikationer på Linux.
Nøglefunktioner
- ODBC 3.x-kompatibel: Fuld implementering af ODBC 3.x-specifikationen.
- Microsoft Entra ID-autentificering: Flere autentificeringsflows, herunder Azure CLI, klientoplysninger, certifikatbaseret og adgangstoken-autentificering.
- Spark SQL-forespørgselsunderstøttelse: Direkte udførelse af Spark SQL-sætninger.
-
Omfattende understøttelse af datatyper: Understøttelse af alle Spark SQL-datatyper, inklusive komplekse typer (
ARRAY,MAP, ogSTRUCT). - Genbrug af sessioner: Indbygget sessionstyring for forbedret ydeevne.
- Høj-samtidighedstilstand: Vælg delte, varme server-side Livy-sessioner for at reducere forbindelsesopstartsforsinkelse og Spark-klyngens spredning.
- Understøttelse af store tabel: Optimeret håndtering af store resultatsæt med konfigurerbare sidestørrelser.
- Asynkron prefetch: Indlæsning af baggrundsdata for forbedret ydeevne.
- Proxy-understøttelse: HTTP-proxykonfiguration til virksomhedsmiljøer.
- Multi-schema lakehouse-support: Forbind til et specifikt skema inden for et lakehouse.
Bemærk
I open source Apache Spark bruges database og skema synonymt. For eksempel giver kørende SHOW SCHEMAS eller SHOW DATABASES i en Fabric-notebook det samme resultat: en liste over alle skemaer i lakehouse.
Forudsætninger
Før du bruger Microsoft ODBC Driver til Microsoft Fabric Data Engineering på Linux, skal du sikre dig, at du opfylder følgende forudsætninger:
- Operativsystem: Ubuntu 22.04 eller nyere, Debian 11 eller nyere, eller Red Hat Enterprise Linux (RHEL) 8 eller senere på x86-64.
-
unixODBC: ODBC's drivermanager til Linux. Installer og-pakkerne
unixodbcunixodbc-dev. -
libcurl: HTTP-runtime-afhængigheden, såsom
libcurl4eller den tilsvarende pakke til din distribution. -
OpenSSL: TLS og kryptografi-runtime-afhængighed, såsom
openssloglibssl3eller tilsvarende pakker. - Fabric access: Adgang til et Fabric-arbejdsområde.
- Microsoft Entra ID-legitimationsoplysninger: Passende legitimationsoplysninger til autentificering.
- Workspace- og lakehouse-ID'er: GUID-identifikatorerne for dit Fabric-arbejdsområde og lakehouse.
- Azure CLI (valgfrit): Påkrævet, når du bruger Azure CLI-autentificering.
Download og installer på Linux
For at installere driveren:
Udtræk
ms-sparksql-odbc-linux-2.0.0.tar.Åbn en terminal i den udpakkede mappe.
Installer Debian-pakken:
sudo dpkg -i microsoft-fabric-odbc-driver-2.0.0-Linux.deb
Pakken installerer følgende filer:
| Fil | Installeret placering |
|---|---|
| Driverbibliotek | /usr/lib/libmicrosoftfabricodbc.so |
| Skabelon for førerregistrering | /usr/share/microsoft-fabric-odbc-driver/odbcinst.ini.template |
| DSN-konfigurationsskabelon | /usr/share/microsoft-fabric-odbc-driver/odbc.ini.template |
| Licens | /usr/share/doc/microsoft-fabric-odbc-driver/LICENSE |
| Brugsvejledning | /usr/share/doc/microsoft-fabric-odbc-driver/USAGE_Linux.md |
Installer en RPM-pakke
På RHEL, Fedora eller CentOS installerer du RPM-pakken fra det udpakkede driverarkiv:
sudo dnf install ./microsoft-fabric-odbc-driver-*.x86_64.rpm
Alternativt kan du bruge rpm:
sudo rpm -i microsoft-fabric-odbc-driver-*.x86_64.rpm
Verdsig, at omdrejningstallet registrerede driveren:
odbcinst -q -d | grep "Microsoft"
For at afinstallere RPM-pakken, kør:
sudo dnf remove microsoft-fabric-odbc-driver
Installer en tarball
For distributioner uden Debian- eller RPM-pakkeunderstøttelse, eller for en brugerdefineret installationsplacering, udpak .tar.gz pakken og kør dens installationsscript:
tar -xzf microsoft-fabric-odbc-driver-2.0.0-linux-x86_64.tar.gz
cd microsoft-fabric-odbc-driver-2.0.0
# Install to /opt/microsoft/fabricodbc.
sudo ./install.sh
# Or install to a custom writable location.
./install.sh --prefix=$HOME/fabricodbc
Installationsscriptet understøtter disse muligheder:
| Mulighed | Beskrivelse |
|---|---|
--prefix=<path> |
Installer i en brugerdefineret mappe. Standarden er /opt/microsoft/fabricodbc. |
--no-register |
Spring unixODBC-kørerregistreringen over. |
--dry-run |
Vis de planlagte ændringer uden at installere filer. |
--uninstall |
Fjern de installerede filer og afregistrer driveren. |
--help |
Vis kommandohjælp. |
For at verificere standard tarball-installationen, kør:
odbcinst -q -d
ls -la /opt/microsoft/fabricodbc/lib/libmicrosoftfabricodbc.so
For at afinstallere det, kør sudo ./install.sh --uninstall fra den udpakkede pakkemappe.
Registrer driveren manuelt
Pakken registrerer automatisk driveren hos unixODBC. For at registrere driveren manuelt, kør:
sudo odbcinst -i -d -f /usr/share/microsoft-fabric-odbc-driver/odbcinst.ini.template
Verificér installationen
Kontroller at driveren er registreret, og at biblioteket er installeret:
odbcinst -q -d
ls -la /usr/lib/libmicrosoftfabricodbc.so
Kommandoen odbcinst skal vise [Microsoft ODBC Driver for Microsoft Fabric Data Engineering].
Afinstaller driveren
For at afinstallere driveren, kør følgende kommando:
sudo dpkg -r microsoft-fabric-odbc-driver
Denne kommando fjerner driverfilerne og afregistrerer driveren fra unixODBC.
Eksempel på hurtigstart
Følgende eksempler forbinder til Fabric og kører en Spark SQL-forespørgsel. Gennemfør forudsætningerne og installer driveren, før du kører et eksempel.
Python-eksempel
import pyodbc
connection_string = (
"DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
"WorkspaceId=<workspace-id>;"
"LakehouseId=<lakehouse-id>;"
"AuthFlow=AZURE_CLI;"
)
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()
C/C++ eksempel
#include <sql.h>
#include <sqlext.h>
#include <iostream>
int main() {
SQLHENV henv = SQL_NULL_HENV;
SQLHDBC hdbc = SQL_NULL_HDBC;
SQLHSTMT hstmt = SQL_NULL_HSTMT;
SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0);
SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
const char* connectionString =
"DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
"WorkspaceId=<workspace-id>;"
"LakehouseId=<lakehouse-id>;"
"AuthFlow=AZURE_CLI;";
SQLRETURN result = SQLDriverConnect(
hdbc,
NULL,
(SQLCHAR*)connectionString,
SQL_NTS,
NULL,
0,
NULL,
SQL_DRIVER_NOPROMPT);
if (SQL_SUCCEEDED(result)) {
std::cout << "Connected successfully!" << std::endl;
SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
result = SQLExecDirect(
hstmt,
(SQLCHAR*)"SELECT 'Hello from Fabric!' AS message",
SQL_NTS);
if (SQL_SUCCEEDED(result)) {
char message[256];
SQLLEN indicator;
while (SQLFetch(hstmt) == SQL_SUCCESS) {
SQLGetData(
hstmt,
1,
SQL_C_CHAR,
message,
sizeof(message),
&indicator);
std::cout << message << std::endl;
}
}
SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
SQLDisconnect(hdbc);
}
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
return 0;
}
Byg og kør eksemplet:
g++ -o fabric_test fabric_test.cpp -lodbc -std=c++17
./fabric_test
.NET-eksempel
using System.Data.Odbc;
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));
}
Forbindelsesstrengsformat
Grundlæggende forbindelsesstreng
Brug følgende forbindelsesstreng-format:
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};<parameter1>=<value1>;<parameter2>=<value2>;...
Forbindelsesstrengskomponenter
| Komponent | Beskrivelse | Eksempel |
|---|---|---|
DRIVER |
ODBC driver-identifikator | {Microsoft ODBC Driver for Microsoft Fabric Data Engineering} |
WorkspaceId |
Fabric workspace identifier (GUID) | 4bbf89a8-66bb-443f-91af-df31e6a7560b |
LakehouseId |
Fabric lakehouse-identifikator (GUID) | d8faa650-1343-496b-b9cc-d4168a676f90 |
AuthFlow |
Godkendelsesmetode |
AZURE_CLI, CLIENT_CREDENTIAL, CLIENT_CERTIFICATE, eller ACCESS_TOKEN |
Eksempel på forbindelsesstrenge
Grundlæggende forbindelse
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI
Forbindelse med performance-muligheder
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;ReuseSession=true;LargeTableSupport=true;PageSizeBytes=18874368
Forbindelse til skovhugning
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;LogLevel=DEBUG;LogFile=/tmp/odbc_driver.log
Forbindelse med høj-samtidighedstilstand
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;LivyMode=HighConcurrency;SessionTag=bi-dashboard
For fuldstændig konfigurationsvejledning, se High-concurrency (HC) mode).
Godkendelse
Microsoft ODBC Driver for Microsoft Fabric Data Engineering understøtter flere autentificeringsmetoder via Microsoft Entra ID. Konfigurér autentificering ved at bruge parameteren AuthFlow i forbindelsesstreng eller DSN.
Godkendelsesmetoder
AuthFlow-værdi |
Beskrivelse |
|---|---|
AZURE_CLI |
Udvikling med Azure CLI-legitimationsoplysninger |
CLIENT_CREDENTIAL |
Serviceprincipal med en klienthemmelighed |
CLIENT_CERTIFICATE |
Serviceleder med et certifikat |
ACCESS_TOKEN |
Foruderhvervet bæreradgangstoken |
FILE_TOKEN |
Læser et autentificeringstoken fra en fil |
Bemærk
Interaktiv browserautentificering er ikke tilgængelig på headless Linux-servere. Brug i stedet Azure CLI, klientoplysninger, certifikatbaseret eller adgangstoken-autentificering.
Azure CLI authentication
Brug Azure CLI-autentificering til udvikling og interaktive applikationer.
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)
Før du forbinder, skal du sikre dig, at Azure CLI er installeret, og log ind:
az --version
az login
For at installere Azure CLI på Debian eller Ubuntu, brug pakkehåndteringen:
sudo apt-get update
sudo apt-get install -y azure-cli
Klientlegitimationsautentificering
Brug kundelegitimationsgodkendelse til automatiserede tjenester og baggrundsjobs.
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};"
)
Angiv følgende parametre:
-
TenantId: Microsoft Entra lejer-ID. -
ClientId: Applikations-(klient-)ID'et. -
ClientSecret: Klientens hemmelighed.
Gem hemmeligheder i en sikker hemmelig butik eller miljøvariable. Gem ikke hemmeligheder i klartekst-forbindelsesstrenge eller INI-filer.
Certifikatbaseret godkendelse
Brug certifikatbaseret autentificering til virksomhedsapplikationer, der kræver certifikatoplysninger.
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=/path/to/cert.pfx;"
"CertificatePassword=<password>;"
)
Angiv følgende parametre:
-
TenantId: Microsoft Entra lejer-ID. -
ClientId: Applikations-(klient-)ID'et. -
CertificatePath: Stien til PFX- eller PKCS12-certifikatfilen. -
CertificatePassword: Certifikatets adgangskode.
Adgangstoksgodkendelse
Brug adgangstoken-autentificering, når din applikation får en token gennem en anden mekanisme.
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};"
)
Filtoken-autentificering
Brug filtoken-autentificering i containeriserede miljøer og automatiserede pipelines, hvor en anden proces skriver en bærertoken til driverens velkendte tokenfil:
connection_string = (
"DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
"WorkspaceId=<workspace-id>;"
"LakehouseId=<lakehouse-id>;"
"AuthFlow=FILE_TOKEN;"
)
For understøttede cross-driver property aliases, se Cross-driver property aliases.
Konfigurationsparametre
Påkrævede parametre
Inkluder disse parametre i hver forbindelsesstreng:
| Parameter | Type | Beskrivelse | Eksempel |
|---|---|---|---|
WorkspaceId |
UUID | Id for stofarbejdsområde | 4bbf89a8-... |
LakehouseId |
UUID | Fabric lakehouse-identifikator | d8faa650-... |
AuthFlow |
String | Autentificeringsflowtype | AZURE_CLI |
Valgfrie parametre
Forbindelsesindstillinger
| Parameter | Type | Standard | Beskrivelse |
|---|---|---|---|
Database |
String | Ingen | Indledende database til klassisk tilstand. HC-tilstand aktiverer det ikke automatisk; kør USE <database> efter tilslutning eller brug fuldt kvalificerede tabelnavne. |
Scope |
String | https://api.fabric.microsoft.com/.default |
OAuth-scope |
Ydelsesindstillinger
| Parameter | Type | Standard | Beskrivelse |
|---|---|---|---|
ReuseSession |
Boolean | true |
Genanvend en eksisterende Spark-session |
LargeTableSupport |
Boolean | false |
Muliggør optimeringer for store resultatsæt |
EnableAsyncPrefetch |
Boolean | false |
Aktiver baggrundsdata-prefetching |
PageSizeBytes |
Integer |
18874368 (18 MB) |
Sidestørrelse for resultatpaginering fra 1 til 18 MB |
Logningsindstillinger
| Parameter | Type | Standard | Beskrivelse |
|---|---|---|---|
LogLevel |
String | INFO |
Log-niveau: DEBUG, INFO, , WARNeller ERROR. Brug DEBUG til detaljeret driverdiagnostik. |
LogFile |
String | odbc_driver.log |
Absolut eller relativ logfilsti |
Proxy-indstillinger
| Parameter | Type | Standard | Beskrivelse |
|---|---|---|---|
UseProxy |
Boolean | false |
Aktivér en proxy |
ProxyHost |
String | Ingen | Proxy-værtsnavn |
ProxyPort |
Integer | Ingen | Proxy-port |
ProxyUsername |
String | Ingen | Proxy-autentificering brugernavn |
ProxyPassword |
String | Ingen | Proxy-autentificeringsadgangskode |
Høj-samtidighed (HC) indstillinger
Brug disse parametre til at aktivere og konfigurere high-concurrency (HC) tilstand. HC-tilstand er opt-in. Hvis du ikke sætter LivyMode eller UseHighConcurrency, bruger driveren den klassiske enkelt-session-sti. For vejledning og eksempler, se High-concurrency (HC) mode.
| Parameter | Type | Standard | Beskrivelse |
|---|---|---|---|
LivyMode |
String | Ikke angivet | Styrer sessionsindsamling. Understøttede værdier er Classic, HighConcurrencyog Auto.
Auto Bruger i øjeblikket den klassiske sti. |
UseHighConcurrency |
Boolean | false |
Aktiverer HC-tilstand som et alternativ til at sætte LivyMode=HighConcurrency. |
SessionTag |
String | Ingen | Giver et serverside-pakkehint. Forbindelser skal bruge matchende server-side konfiguration for at dele en varm Livy-session. |
IdempotencyKey |
String | Ingen | Leverer en klientgenereret nøgle til sikre HC-anskaffelsesforsøg. Driveren validerer tegnsættet og logger aldrig værdien. |
EnvironmentId |
String | Ingen | Specificerer Fabric-miljøidentifikatoren, der sendes som spark.fabric.environmentDetails i HC-anskaffelseskonfigurationen. |
HeartbeatTimeoutInSecond |
Integer | Serverstandard | Sætter server-side HC-sessionens idle timeout, på få sekunder. Værdien skal være et positivt heltal. |
AcquireTimeoutSeconds |
Integer | 300 |
Sætter hvor længe føreren venter på, at en HC-session når Idle staten, i sekunder. Værdien skal være et positivt heltal. |
conf.<key> |
String | Ingen | Specificerer en Spark-konfigurationsoverride, der sendes i HC-anskaffelsesanmodningen. F.eks., conf.spark.sql.shuffle.partitions=200. |
Mode-prioritet og validering
-
LivyModeHar forrang overUseHighConcurrency, når du sætter begge parametre. - Parameterværdier er ikke små og små bogstaver.
-
UseHighConcurrencyaccepterertrue,1, ,yes, elleronfor at aktivere HC-tilstand. Den acceptererfalse,0,no, elleroffat deaktivere HC-tilstand. - For andre ikke-tomme værdier
SQLDriverConnectreturnerer en fejl. DSN-onlySQLConnectlogger valideringsfejlen og bruger den klassiske sti.
Kompatibilitetsindstillinger
Driveren accepterer TenantPrincipal og PoolMax, inklusive deres miljøvariable fallbacks, for kompatibilitet med tidligere HC-konfigurationer. Driveren parser og validerer disse værdier, men de påvirker ikke HC-sessionsmatchning eller runtime-poolkapacitet. Stol ikke på dem til lejerisolering eller forbindelsesbegrænsninger.
Miljøvariable faldbacks
Driveren bruger kun følgende miljøvariabler, når den tilsvarende DSN- eller forbindelsesstrengparameter ikke er sat:
| Miljøvariabel | Kort 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, genkender truekun miljø-aktivering , 1, eller yes (kasus-insensitiv). Andre værdier lader HC-tilstand være deaktiveret. Og off aliaserne on gælder kun for DSN- og forbindelsesstrengsværdier.
Høj-samtidighed (HC) tilstand
High-concurrency (HC) tilstand lader ODBC-forbindelser til samme arbejdsområde og lakehouse tilknytte sig til delte, varme server-side Livy Spark-sessioner i stedet for at provisionere en separat klynge for hver forbindelse. Brug det til arbejdsbelastninger som BI-dashboards, notebook-kerner og ETL-fan-out, der åbner mange kortvarige forbindelser og kan dele serveradministreret Spark-kapacitet.
HC-tilstand er opt-in. Hvis du ikke konfigurerer en HC-indstilling, bruger driveren den klassiske enkelt-session-sti.
Vælg en forbindelsestilstand
Brug HC-tilstand når:
- Din arbejdsbyrde åbner mange kortlivede ODBC-forbindelser, såsom BI-dashboards, notebook-kerner eller ETL-fan-out.
- Forbindelser retter sig mod det samme arbejdsområde og lakehouse og kan dele en serverstyret Spark-session.
- At reducere latenstid ved koldstart pr. forbindelse er vigtigt.
Brug klassisk tilstand, når:
- Hver forbindelse kræver en isoleret Spark-session på grund af forskellige Spark-konfigurationer eller streng ressourceisolering.
- Fabric Livy-endpointet for det målrettede arbejdsområde og lakehouse understøtter ikke HC-tilstand.
Aktiver høj-samtidighedstilstand
Tilføj en parameter for høj samtidighed til DSN- eller forbindelsesstreng.
Anbefalet: Set LivyMode
Brug LivyMode til eksplicit at vælge sessionsindsamlingstilstanden:
LivyMode=HighConcurrency
Understøttede værdier er Classic, HighConcurrencyog Auto. Værdier er ikke små og små bogstaver.
Auto Vælger i øjeblikket klassisk tilstand.
Alternativ: Set UseHighConcurrency
Brug Boolean-indstillingen for kompatibilitet med eksisterende konfigurationer:
UseHighConcurrency=true
For at aktivere høj-samtidighedstilstand brug true, , , yes, eller on1. For at deaktivere det, brug false, , , no, eller off0. Værdier er ikke små og små bogstaver.
SQLDriverConnect afviser andre ikke-tomme værdier med SQLSTATE HY024. DSN-only SQLConnect logger valideringsfejlen og bruger klassisk tilstand.
Bemærk
Hvis du sætter begge parametre, LivyMode har forrang over UseHighConcurrency.
Du kan også aktivere high-concurrency mode for den nuværende shell ved at bruge miljøvariabler:
export FABRIC_ODBC_USE_HC=true
export FABRIC_ODBC_WORKSPACE_ID=<workspace-id>
export FABRIC_ODBC_LAKEHOUSE_ID=<lakehouse-id>
export FABRIC_ODBC_SESSION_TAG=bi-dashboard
Påkrævede parametre i HC-tilstand
HC-aktivering kræver følgende gyldige identifikatorer:
| Parameter | Bemærkninger |
|---|---|
WorkspaceId |
Skal være en gyldig Fabric workspace GUID. |
LakehouseId |
Skal være en gyldig Fabric lakehouse GUID. |
Inkludér SessionTag , fordi det påvirker server-side matching for varme sessioner.
Sessionsmatchning
HC-tilstand garanterer ikke, at hver forbindelse genbruger en eksisterende session. For hver session-anskaffelsesanmodning sender driveren:
- Værdien
SessionTag. - Den effektive Spark-konfiguration, inklusive
conf.*indstillinger ogEnvironmentId.
Fabric Livy-tjenesten vurderer disse værdier og beslutter, om forbindelsen skal knyttes til en varm session eller oprettes en ny. For at forbedre genbrug af sessioner skal man bruge konsistente værdier på tværs af forbindelser, der er beregnet til at dele serveradministreret Spark-kapacitet.
Eksempel på forbindelsesstrenge
Minimal HC-forbindelse med Azure CLI authentication:
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;LivyMode=HighConcurrency;SessionTag=bi-dashboard
HC-forbindelse med tunede 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-forbindelse med et miljø og Spark-konfigurationsoverskrivninger:
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 medpyodbc:
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-tilstand i en Linux DSN
I stedet for at gentage HC-indstillinger i hver forbindelsesstreng, gem dem i ~/.odbc.ini et brugerspecifikt DSN eller /etc/odbc.ini for et systemomfattende DSN.
[FabricHCDSN]
Description = Microsoft Fabric Data Engineering with HC mode
Driver = Microsoft ODBC Driver for Microsoft Fabric Data Engineering
WorkspaceId = <workspace-id>
LakehouseId = <lakehouse-id>
AuthFlow = AZURE_CLI
LivyMode = HighConcurrency
SessionTag = bi-dashboard
AcquireTimeoutSeconds = 300
HeartbeatTimeoutInSecond = 600
Når du har gemt DSN, skal du verificere det og teste forbindelsen.
odbcinst -q -s
isql -k -v "DSN=FabricHCDSN;"
Når en forbindelsesstreng ikke specificerer en værdi, læser driveren disse indstillinger fra DSN:
LivyModeUseHighConcurrencyEnvironmentIdSessionTagIdempotencyKeyHeartbeatTimeoutInSecondAcquireTimeoutSeconds
Føreren læser også kun TenantPrincipal kompatibilitet og PoolMax indstillinger. Brug parameternavnene i HC-indstillingstabellen.
Vigtig
Driveren læser conf.* ikke Spark-konfigurationsoverstyringer fra DSN. Tilføj dem til forbindelsesstreng ved kørsel eller injicere dem før kald SQLDriverConnect.
Deaktiver HC-tilstand
Du kan deaktivere nye HC-sessioner uden at genudrulle driveren. Brug den metode, der svarer til, hvordan du aktiverede HC-tilstand:
| HC-konfigurationskilde | Sådan deaktiverer man HC-tilstand |
|---|---|
| Kun miljøvariabel | Sæt FABRIC_ODBC_USE_HC=false, eller fjern variablen. |
| DSN | Sæt LivyMode=Classic. Alternativt kan du fjerne LivyMode og sætte UseHighConcurrency=false. |
| Forbindelsesstreng | Sæt LivyMode=Classic, eller fjern HC-parametrene. |
Forbindelsesstreng- og DSN-indstillinger har forrang frem for miljøvariabel-fallback. Disse ændringer påvirker kun nye forbindelser. Eksisterende HC-sessioner fortsætter, indtil de bliver udgivet.
Forstå HC-runtime-adfærd
-
Validering:
SQLDriverConnectafviser ugyldige HC booleske og positive heltalsværdier med SQLSTATEHY024. Den afviser en ugyldigLivyModeog ugyldig eller overdimensioneretWorkspaceId,LakehouseId, ogIdempotencyKeyværdier med SQLSTATEHY000. En overdimensioneret kompatibilitetsværdiTenantPrincipalreturnererHY000også . For kunSQLConnectDSN logger driveren almindelige HC-valideringsfejl og bruger klassisk tilstand. Overdimensionerede sikkerhedsfølsomme værdier fejler stadig forbindelsen. -
Følsomme data: Driveren udelukker eller fjerner
IdempotencyKeyandre følsomme felter fra HC-logs og diagnostiske output. - Annullering: Annullering af kontoudtog er samarbejdsvillig. Serverarbejde, der allerede er i gang, afsluttes rent i stedet for straks at blive afsluttet.
- Afbrydere: HC- og klassiske tilstande bruger separate afbrydere. At udtømme den ene tilstand påvirker ikke den anden.
-
Startdatabase: HC-forbindelser udfører ikke den indledende
USEsætning for parameterenDatabase. KørUSE <database>efter tilslutning eller brug fuldt kvalificerede tabelnavne. -
Diagnostik: Indstil
LogLevel=DEBUGtil at logge beslutninger om HC-indsamling, polling, frigivelse og fejlkortlægning. For fokuseret fejlfinding skal du indsætteLIVY_HC_VERBOSE=1til at inkludere yderligere rensede HC HTTP-diagnostik.
DSN-konfiguration
På Linux konfigureres datakildenavne (DSN'er) i INI-filer i stedet for i Windows-registret.
| Fil | Omfanget | Access |
|---|---|---|
/etc/odbc.ini |
Systemomfattende DSN'er | Kræver sudo |
~/.odbc.ini |
Brugerspecifikke DSN'er | Kun nuværende brugere |
Opret et DSN
Hvis ~/.odbc.ini det findes, tilføj den nye DSN-sektion uden at erstatte den eksisterende fil. Kopier kun den installerede skabelon, når du opretter filen:
if [ -e "$HOME/.odbc.ini" ]; then
echo "Preserve ~/.odbc.ini and add the new DSN section manually."
else
cp /usr/share/microsoft-fabric-odbc-driver/odbc.ini.template "$HOME/.odbc.ini"
fi
Rediger ~/.odbc.ini med dine Fabric-arbejdsområdedetaljer:
[FabricDSN]
Description = Microsoft Fabric Data Engineering
Driver = Microsoft ODBC Driver for Microsoft Fabric Data Engineering
WorkspaceId = <workspace-id>
LakehouseId = <lakehouse-id>
AuthFlow = AZURE_CLI
LogLevel = INFO
# LogFile = /tmp/fabric_odbc.log
# LargeTableSupport = true
# ReuseSession = true
Verificér DSN
List de konfigurerede DSN'er, og test derefter forbindelsen:
odbcinst -q -s
isql -k -v "DSN=FabricDSN;"
Kommandoen isql kræver kommandolinjeværktøjerne unixODBC. Muligheden -k bruger SQLDriverConnect, som lader driveren behandle DSN-forbindelsesattributter.
Brug et DSN i applikationer
conn = pyodbc.connect("DSN=FabricDSN")
using var connection = new OdbcConnection("DSN=FabricDSN");
await connection.OpenAsync();
SQLRETURN result = SQLConnect(
hdbc,
(SQLCHAR*)"FabricDSN",
SQL_NTS,
NULL,
0,
NULL,
0);
Eksempler på anvendelse
Test en forbindelse med isql
Start en interaktiv SQL-session:
isql -k -v "DSN=FabricDSN;"
Kør en enkelt forespørgsel:
echo "SELECT 1 AS test" | isql -k -v "DSN=FabricDSN;" -b
Brug -k til Fabric DSN'er, så isql de forbinder gennem SQLDriverConnect i stedet for SQLConnect.
Arbejde med store resultatsæt
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;"
"EnableAsyncPrefetch=1;"
)
conn = pyodbc.connect(connection_string)
cursor = conn.cursor()
cursor.execute("SELECT * FROM large_table")
row_count = 0
while True:
rows = cursor.fetchmany(1000)
if not rows:
break
for row in rows:
row_count += 1
if row_count % 10000 == 0:
print(f"Processed {row_count} rows")
print(f"Total rows processed: {row_count}")
conn.close()
Opdag skemaer og tabeller
import pyodbc
conn = pyodbc.connect(connection_string)
cursor = conn.cursor()
cursor.execute("SHOW TABLES")
for table in cursor.fetchall():
print(table)
cursor.execute("DESCRIBE employees")
for column in cursor.fetchall():
print(column)
cursor.execute("SHOW SCHEMAS")
for schema in cursor.fetchall():
print(schema)
conn.close()
Datatypetilknytning
Driveren mapper Spark SQL-datatyper til ODBC SQL-typer:
| Spark SQL-type | ODBC SQL-type | C/C++ type | Python-typen | .NET-type |
|---|---|---|---|---|
BOOLEAN |
SQL_BIT |
SQLCHAR |
bool |
bool |
BYTE |
SQL_TINYINT |
SQLSCHAR |
int |
sbyte |
SHORT |
SQL_SMALLINT |
SQLSMALLINT |
int |
short |
INT |
SQL_INTEGER |
SQLINTEGER |
int |
int |
LONG |
SQL_BIGINT |
SQLBIGINT |
int |
long |
FLOAT |
SQL_REAL |
SQLREAL |
float |
float |
DOUBLE |
SQL_DOUBLE |
SQLDOUBLE |
float |
double |
DECIMAL |
SQL_DECIMAL |
SQLCHAR* |
decimal.Decimal |
decimal |
STRING |
SQL_VARCHAR |
SQLCHAR* |
str |
string |
VARCHAR(n) |
SQL_VARCHAR |
SQLCHAR* |
str |
string |
CHAR(n) |
SQL_CHAR |
SQLCHAR* |
str |
string |
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* |
JSON-streng | string |
MAP |
SQL_VARCHAR |
SQLCHAR* |
JSON-streng | string |
STRUCT |
SQL_VARCHAR |
SQLCHAR* |
JSON-streng | string |
Platformforskelle
| Funktion | Windows | Linux |
|---|---|---|
| Kørerleder | Microsoft ODBC Driver Manager | unixODBC |
| Driver-binær | microsoftfabricodbc.dll |
libmicrosoftfabricodbc.so |
| DSN-konfiguration | Windows-registreringspapir og GUI |
/etc/odbc.ini Og ~/.odbc.ini |
| Førerregistrering | Registreringsdatabase og odbcad32.exe |
odbcinst -i -d -f |
| HTTP-klient | WinHTTP | libcurl |
| lokalt lager til trådbaseret data | Windows indbygget understøttelse | Openssl |
| Certifikatautentificering | Windows CryptoAPI | OpenSSL med RS256 og PEM- eller PFX-filer |
| Interaktiv godkendelse | Browservindue | Ikke tilgængelig på headless-servere |
| Emballage | MSI-installationsprogram |
.deb, .rpm, eller .tar.gz pakke |
Fejlfinding
Chauffør ikke fundet
Problem: Forbindelsen fejler med [IM002] Data source name not found and no default driver specified.
Løsninger:
- Verificér førerregistreringen ved at køre
odbcinst -q -d. - Bekræfte at det
/usr/lib/libmicrosoftfabricodbc.sofindes. - Registrer føreren ved at køre
sudo odbcinst -i -d -f /usr/share/microsoft-fabric-odbc-driver/odbcinst.ini.template. - Geninstaller pakken ved at køre
sudo dpkg -i microsoft-fabric-odbc-driver-2.0.0-Linux.deb.
Driveren blev ikke fundet efter en tarball-installation
Problem: Driveren er registreret, men det delte bibliotek er ikke til stede på den registrerede sti.
Løsninger:
- Bekræfte at det
/opt/microsoft/fabricodbc/lib/libmicrosoftfabricodbc.sofindes. - Kør igen
sudo ./install.sh --prefix=/opt/microsoft/fabricodbc. - Hvis du brugte et brugerdefineret præfiks, så bekræft at den registrerede driversti bruger det samme præfiks.
DSN ikke fundet
Problem: Forbindelsen fejler med [IM002] Data source name not found.
Løsninger:
- Verificér DSN-konfigurationen ved at køre
odbcinst -q -s. - Bekræft at
~/.odbc.inidet indeholder/etc/odbc.iniDSN-sektionen. - Sørg for, at værdien
Driverpræcist matcher den registrerede førers navn.
Forbindelsesfejl
Problem: Driveren kan ikke forbinde til Fabric.
Løsninger:
- Bekræft, at arbejdsområde-ID'et og lakehouse-ID'et er gyldige GUID'er.
- Tjek Azure CLI-autentificering ved at køre
az account show. - Sørg for, at du har de nødvendige tilladelser til Fabric workspace.
- Tjek netværksforbindelse og proxyindstillinger.
Godkendelsesfejl
Problem: Azure CLI-autentificering fejler.
Løsninger:
- Løb
az loginfor at opdatere dine legitimationsoplysninger. - Sæt det korrekte abonnement ved at køre
az account set --subscription <subscription-id>. - Tjek tokenet ved at køre
az account get-access-token --resource https://api.fabric.microsoft.com. - Sørg for, at din konto har de nødvendige Fabric-arbejdsområde-tilladelser.
Delte biblioteksfejl
Problem: Chaufføren rapporterer error while loading shared libraries: libmicrosoftfabricodbc.so.
Løsninger:
- Geninstaller pakken ved at køre
sudo dpkg -i microsoft-fabric-odbc-driver-2.0.0-Linux.deb. - Bekræfte at det
/usr/lib/libmicrosoftfabricodbc.sofindes. - Kør
sudo ldconfigfor at opdatere cachen til det delte bibliotek.
Timeout for forespørgsler
Problem: Forespørgsler går ud på store tabeller.
Løsninger:
- Tilføj
LargeTableSupport=truetil forbindelsesstreng. - Juster
PageSizeBytesfor resultatstørrelsen. - Tilføj
EnableAsyncPrefetch=1til forbindelsesstreng. - Brug en
LIMITklausul til at begrænse resultatstørrelsen.
Aktiver logning
Aktiver detaljeret logning i et DSN:
[FabricDSN]
LogLevel = DEBUG
LogFile = /tmp/fabric_odbc_debug.log
Alternativt kan du tilføje logningsparametre til forbindelsesstreng:
LogLevel=DEBUG;LogFile=/tmp/fabric_odbc_debug.log;
Driveren understøtter følgende log-niveauer:
-
DEBUG: Indeholder detaljeret fejlfinding og er det mest udførlige driver-logniveau. -
INFO: Indeholder generel information og er standarden. -
WARN: Indeholder kun advarsler. -
ERROR: Indeholder kun fejl.
Aktivér unixODBC-sporing
For lavniveau ODBC-kaldsdiagnostik, tilføj følgende konfiguration til /etc/odbcinst.ini:
[ODBC]
Trace = yes
TraceFile = /tmp/odbc_trace.log
Slå sporing fra, når du er færdig med fejlfinding, for at undgå unødvendigt ydelsesmæssigt overhead.