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 på Fabric's Livy API'er leverer sikker og fleksibel Spark SQL-forbindelse til dine C/C++, .NET, Python og andre ODBC-kompatible applikationer og BI-værktøjer.
Vigtige funktioner
- ODBC 3.x-kompatibel: Fuld implementering af ODBC 3.x-specifikationen
- Microsoft Entra ID autentificering: Flere autentificeringsstrømme, herunder Azure CLI, interaktiv, klientlegitimations-, 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, STRUCT)
- Genbrug af sessioner: Indbygget sessionsstyring 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
- Async prefetch: Baggrundsdataindlæsning for forbedret ydeevne
- Proxy-understøttelse: HTTP-proxykonfiguration til virksomhedsmiljøer
- Multi-schema lakehouse-support: Forbind til et specifikt skema inden for et lakehouse
- OneLake-integration: Få adgang til lakehouse-data lagret i OneLake, inklusive tabeller på tværs af flere skemaer, via et samlet ODBC-interface uden separat lagringskonfiguration
- Miljøelementer understøtter: Vedhæft Fabric miljøelementer under jobudførelsen for at anvende arbejdsområdebiblioteker, Spark-egenskaber og variabler til hver session
- Custom Spark-konfiguration: Send Spark-konfigurationsegenskaber direkte gennem forbindelsesstreng for at tune sessionsadfærden
Bemærkning
I open source Apache Spark bruges database og skema synonymt. For eksempel giver det samme resultat, når man kører SHOW SCHEMAS eller SHOW DATABASES i en Fabric-notesbog, en liste over alle skemaer i lakehouset.
Forudsætninger
Før du bruger Microsoft ODBC-driveren til Microsoft Fabric Data Engineering, skal du sikre dig, at du har:
- Operativsystem: Windows 10/11 eller Windows Server 2016+
- Fabric Access: Adgang til et Fabric-arbejdsområde
- Microsoft Entra ID legitimationsoplysninger: Passende legitimationsoplysninger til autentificering
- Workspace og lakehouse ID'er: GUID-identifikatorer for dit Fabric workspace og lakehouse
- Azure CLI (valgfrit): Required for Azure CLI authentication method
Download og MSI-installation
- Download Microsoft ODBC-driveren til Microsoft Fabric Data Engineering MSI-pakken
- Dobbeltklik
MicrosoftFabricODBCDriver-2.0.msi. - Følg installationsguiden og accepter licensaftalen
- Vælg installationsmappe (standard:
C:\Program Files\Microsoft ODBC Driver for Microsoft Fabric Data Engineering\) - Fuldfør installationen
Uovervåget installation
# Silent installation
msiexec /i "MicrosoftFabricODBCDriver-2.0.msi" /quiet
# Installation with logging
msiexec /i "MicrosoftFabricODBCDriver-2.0.msi" /l*v install.log
Kontrollér installationen
Efter installation, verificér at driveren er registreret:
- Kør
odbcad32.exe(ODBC Data Source Administrator) - Navigér til fanen Drivere
- Bekræft at "Microsoft ODBC Driver for Microsoft Fabric Data Engineering" er opført
Eksempel på hurtigstart
Dette eksempel demonstrerer, hvordan man forbinder til Fabric og udfører en forespørgsel ved hjælp af Microsoft ODBC Driver for Microsoft Fabric Data Engineering. Før du kører denne kode, skal du sikre dig, at du har opfyldt adgangskravene og installeret 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));
}
Forbindelsesstrengsformat
Grundlæggende forbindelsesstreng
Microsoft ODBC-driveren for Microsoft Fabric Data Engineering bruger følgende forbindelsesstrengsformat:
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};<parameter1>=<value1>;<parameter2>=<value2>;...
Forbindelsesstrengskomponenter
| Komponent | Beskrivelse | Eksempel |
|---|---|---|
| KØRER | ODBC driver-identifikator | {Microsoft ODBC Driver for Microsoft Fabric Data Engineering} |
| WorkspaceId | Fabric workspace identifier (GUID) | xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx |
| LakehouseId | Fabric lakehouse-identifikator (GUID) | xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx |
| AuthFlow | Godkendelsesmetode |
AZURE_CLI, INTERACTIVE, CLIENT_CREDENTIAL, CLIENT_CERTIFICATEACCESS_TOKENFILE_TOKEN |
Eksempel på forbindelsesstrenge
Basic connection (Azure CLI authentication)
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI
Med ydeevnemuligheder
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 skovhugning
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øj samtidighedsmode
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;LivyMode=HighConcurrency;SessionTag=bi-dashboard
Se afsnittet omHigh-Concurrency (HC) Mode for fuld konfigurationsvejledning.
Godkendelse
Microsoft ODBC-driveren for Microsoft Fabric Data Engineering understøtter flere autentificeringsmetoder via Microsoft Entra ID (tidligere Azure Active Directory). Autentificering konfigureres ved hjælp af parameteren AuthFlow i forbindelsesstrengen.
Godkendelsesmetoder
| AuthFlow-værdi | Beskrivelse |
|---|---|
CLIENT_CREDENTIAL (0) |
Serviceansvarlig med klienthemmelighed. Alias: CLIENT_SECRET_CREDENTIAL. |
BROWSER_BASED (1) |
Interaktiv browserbaseret autentificering. Alias: INTERACTIVE. |
AZURE_CLI (2) |
Udvikling med Azure CLI-legitimationsoplysninger. |
CLIENT_CERTIFICATE_CREDENTIAL (3) |
Serviceleder med certifikat. Alias: CLIENT_CERTIFICATE. |
AUTH_ACCESS_TOKEN (4) |
Foruderhvervet bæreradgangstoken. Alias: ACCESS_TOKEN. |
FILE_TOKEN (5) |
Læser en autentificeringstoken fra en fil. |
Du kan angive autentificeringsværdier med store bogstaver, Pascal-bogstaver eller numerisk form. Driveren accepterer også korte aliaser som Browser, , , CLI, Certificate, Token, og FileInteractive. Føreren ignorerer understrøg, når den sammenligner værdier.
Azure CLI authentication
Bedst til: Udvikling og interaktive applikationer
# 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)
Forudsætninger:
- Azure CLI installeret:
az --version - Indlogget:
az login
Interaktiv browserautentificering
Bedst til: Brugerrettede applikationer
# 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)
Adfærd:
- Åbner et browservindue til brugerautentificering
- Oplysninger caches til efterfølgende forbindelser
Klientlegitimation (service principal) autentificering
Bedst 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};"
)
Påkrævede parametre
-
TenantId: Azure lejer-ID -
ClientId: Application (klient) ID fra Microsoft Entra ID -
ClientSecret: Klienthemmelighed fra Microsoft Entra ID
Bedste fremgangsmåder
- Lagre hemmeligheder sikkert (Azure Key Vault, miljøvariabler)
- Brug managed identities, når det er muligt
- Roterer hemmeligheder regelmæssigt
Certifikatbaseret godkendelse
Bedst til: Virksomhedsapplikationer, der kræver certifikatbaseret autentificering
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>;"
)
Påkrævede parametre:
-
TenantId: Azure lejer-ID -
ClientId: Applikations-ID (klient) -
CertificatePath: Sti til PFX/PKCS12 certifikatfil -
CertificatePassword: Certifikatadgangskode
Adgangstoksgodkendelse
Bedst til: Brugerdefinerede autentificeringsscenarier
# 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};"
)
Filtoken-autentificering
Brug filtoken-autentificering til 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;"
)
Driveren løser tokenfilens placering på Windows og Linux.
Cross-driver egenskabsaliaser
ODBC-driveren accepterer udvalgte ADONET- og JDBC-ejendomsnavne ud over native ODBC-navne. Denne støtte kan reducere ændringer i forbindelsesstrenge, når du skifter mellem Fabric-drivere.
| ADO.NET- eller JDBC-ejendom | ODBC-ækvivalent |
|---|---|
FabricWorkspaceID |
WorkspaceId |
FabricLakehouseID |
LakehouseId |
LivySessionTimeoutSeconds |
Timeout for forbindelse |
LivyStatementTimeoutSeconds |
Sætningstimeout |
ConnectionPoolEnabled |
Pool aktiveret |
Driveren løser 17 krydsdriveraliaser ved forbindelsestidspunktet.
Konfigurationsparametre
Påkrævede parametre
Disse parametre skal være til stede i hver forbindelsesstreng:
| Parameter | Type | Beskrivelse | Eksempel |
|---|---|---|---|
| WorkspaceId | UUID | Id for stofarbejdsområde | 4bbf89a8-... |
| LakehouseId | UUID | Fabric lakehouse-identifikator | d8faa650-... |
| AuthFlow | Streng | Autentificeringsflowtype | AZURE_CLI |
Valgfrie parametre
Forbindelsesindstillinger
| Parameter | Type | Standard | Beskrivelse |
|---|---|---|---|
| Database | Streng | Ingen | Indledende database til klassisk tilstand. HC-tilstand aktiverer det ikke automatisk; kør USE <database> efter tilslutning eller brug fuldt kvalificerede tabelnavne. |
| Område | Streng | https://api.fabric.microsoft.com/.default |
OAuth-scope |
Ydelsesindstillinger
| Parameter | Type | Standard | Beskrivelse |
|---|---|---|---|
| ReuseSession | Boolean | true |
Genanvend eksisterende Spark-session |
| LargeTableSupport | Boolean | false |
Muliggør optimeringer for store resultatsæt |
| EnableAsyncPrefetch | Boolean | false |
Aktiver baggrundsdata-prefetching |
| PageSizeBytes | Heltal |
18874368 (18 MB) |
Sidestørrelse til resultatpaginering (1-18 MB) |
Logningsindstillinger
| Parameter | Type | Standard | Beskrivelse |
|---|---|---|---|
| LogLevel | Streng | INFO |
Log-niveau: DEBUG, INFO, , WARNeller ERROR. Brug DEBUG til detaljeret driverdiagnostik. |
| Logfil | Streng | odbc_driver.log |
Logfilsti (absolut eller relativ) |
Proxy-indstillinger
| Parameter | Type | Standard | Beskrivelse |
|---|---|---|---|
| UseProxy | Boolean | false |
Aktiver proxy |
| ProxyHost | Streng | Ingen | Proxy-værtsnavn |
| ProxyPort | Heltal | Ingen | Proxy-port |
| ProxyBrugernavn | Streng | Ingen | Brugernavn til proxy-autentificering |
| ProxyPassword | Streng | 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 |
Streng | 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 |
Streng | Ingen | Giver et serverside-pakkehint. Forbindelser skal bruge matchende server-side konfiguration for at dele en varm Livy-session. |
IdempotencyKey |
Streng | Ingen | Leverer en klientgenereret nøgle til sikre HC-anskaffelsesforsøg. Driveren validerer tegnsættet og logger aldrig værdien. |
EnvironmentId |
Streng | Ingen | Specificerer Fabric-miljøidentifikatoren, der sendes som spark.fabric.environmentDetails i HC-anskaffelseskonfigurationen. |
HeartbeatTimeoutInSecond |
Heltal | Serverstandard | Sætter server-side HC-sessionens idle timeout, på få sekunder. Værdien skal være et positivt heltal. |
AcquireTimeoutSeconds |
Heltal | 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> |
Streng | 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 fallbacks
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 efterlader HC deaktiveret. Og off aliaserne on gælder kun for DSN- og forbindelsesstrengsværdier.
Miljøindstillinger
Du kan tilknytte et Fabric-miljøelement til den Spark-session, som driveren har startet. Det valgte miljøs biblioteker, Spark-egenskaber og variable anvendes automatisk, når sessionen oprettes.
| Parameter | Type | Standard | Beskrivelse |
|---|---|---|---|
| EnvironmentId | UUID | Ingen | Fabric environment item identifier (GUID) til anvendelse under oprettelse af Spark-sessioner |
Eksempel forbindelsesstreng 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>
Bemærkning
Miljøet aktiveres, når Spark-sessionen starter. Hvis du også specificerer brugerdefinerede Spark-konfigurationsegenskaber, har sessionsniveau-egenskaber forrang frem for miljøstandarderne.
Brugerdefineret Spark-konfiguration
Du kan sende Spark-konfigurationsegenskaber direkte i forbindelsesstreng. Enhver parameter, der er præfikseret med spark. , anvendes automatisk på Spark-sessionen ved oprettelsen, hvilket gør det muligt at tilsidesætte arbejdsområde- eller runtime-standardindstillinger.
Eksempler på Spark-konfigurationer:
spark.sql.shuffle.partitions=200
spark.sql.adaptive.enabled=true
spark.sql.autoBroadcastJoinThreshold=10485760
Eksempel forbindelsesstreng med brugerdefinerede Spark-egenskaber:
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
Bemærkning
Spark-konfigurationsegenskaber anvendes, når sessionen oprettes. De gælder for alle forespørgsler, der kører inden for den session, og tilsidesætter miljø- eller runtime-standardindstillinger for de samme egenskaber.
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ærkning
Hvis du sætter begge parametre, LivyMode har forrang over UseHighConcurrency.
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 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 indstillede 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 conf overrides:
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-tilstand i en DSN
Du kan gemme HC-indstillinger i en DSN i stedet for at gentage dem i hver forbindelsesstreng. 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. For at gemme disse indstillinger, rediger DSN ind odbcad32.exe eller brug SQLWritePrivateProfileString. Brug parameternavnene i HC-indstillingstabellen.
Vigtigt!
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.
Konfigurér et DSN
Opret et system-DSN
Åben ODBC-administrator
%SystemRoot%\System32\odbcad32.exeOpret nyt system-DSN
- Gå til fanen "System DSN"
- Vælg "Tilføje"
- Vælg "Microsoft ODBC Driver for Microsoft Fabric Data Engineering"
- Vælg "Færdig"
Konfigurer DSN-indstillinger
-
Datakildenavn: Indtast et unikt navn (f.eks.
FabricODBC) - Beskrivelse: Valgfri beskrivelse
- Workspace ID: Din Fabric workspace GUID
- Lakehouse ID: Din Fabric lakehouse GUID
- Autentificering: Vælg autentificeringsmetode
- Environment ID (valgfrit): Indtast GUID'en for det Fabric miljøelement, der skal tilknyttes under sessionoprettelsen
-
Livy-tilstand (valgfrit): Sat til
HighConcurrencyfor at aktivere HC-tilstand - Sessionstag (valgfrit): Indtast en ikke-følsom operationel etiket for HC-sessionsmatching
- Konfigurer yderligere indstillinger efter behov
-
Datakildenavn: Indtast et unikt navn (f.eks.
Testforbindelse
- Vælg "Test forbindelse" for at verificere indstillinger
- Vælg "OK" for at gemme
Brug DSN i applikationer
# Python - Connect using DSN
conn = pyodbc.connect("DSN=FabricODBC")
// .NET - Connect using DSN
using var connection = new OdbcConnection("DSN=FabricODBC");
await connection.OpenAsync();
Eksempler på anvendelse
Grundlæggende forbindelse og forespørgsel
Pyton
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));
}
}
}
}
Arbejde med store resultatmængder
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()
Udfør DML-sætninger
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;
}
Brug executeDml med INSERT, UPDATE, eller DELETE sætninger. Det rapporterede rækkeantal afhænger af, om resultatet indeholder et opdateringstal, som driveren genkender.
Skemaopdagelse
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()
Datatypetilknytning
Driveren mapper Spark SQL-datatyper til ODBC SQL-typer:
| Spark SQL Type | ODBC SQL Type | C/C++ Type | Python-type | .NET-type |
|---|---|---|---|---|
| BOOLESK | 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 |
| FLYDE | SQL_REAL | SQLREAL | flyde | flyde |
| DOBBELT | SQL_DOUBLE | SQLDOUBLE | flyde | dobbelt |
| DECIMAL | SQL_DECIMAL | SQLCHAR* | decimal. Decimal | decimal |
| 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 | Datetime |
| TIDSSTEMPEL | SQL_TYPE_TIMESTAMP | SQL_TIMESTAMP_STRUCT | datetime.datetime | Datetime |
| ARRAY | SQL_VARCHAR | SQLCHAR* | str (JSON) | streng |
| KORT | SQL_VARCHAR | SQLCHAR* | str (JSON) | streng |
| STRUCT | SQL_VARCHAR | SQLCHAR* | str (JSON) | streng |
Integration af BI-værktøj
Microsoft Excel
- Åbn Excel -> Data -> Hent data -> Fra andre kilder -> Fra ODBC
- Vælg dit konfigurerede DSN (f.eks.
FabricODBC) - Autentificer, hvis det bliver bedt om det
- Gennemse og vælg tabeller
- Indlæs data i Excel-arket
Power BI Desktop
- Åbn Power BI Desktop -> Hent data -> ODBC
- Vælg dit konfigurerede DSN
- Gennemse datakataloget og vælg tabeller
- Transformér data efter behov
- Opret visualiseringer
SQL Server Management Studio (Linked 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;
Fejlfinding
Dette afsnit giver vejledning til at løse almindelige problemer, du kan støde på, når du bruger Microsoft ODBC-driveren til Microsoft Fabric Data Engineering.
Almindelige problemer
Følgende afsnit beskriver almindelige problemer og deres løsninger:
Forbindelsesfejl
Problem: Kan ikke forbinde til Fabric
Løsninger:
- Bekræfte workspace ID og lakehouse id er korrekte GUID'er
- Tjek Azure CLI autentificering:
az account show - Sørg for, at du har passende Fabric-arbejdsområdetilladelser
- Tjek netværksforbindelse og proxyindstillinger
Godkendelsesfejl
Problem: Autentificering fejler med Azure CLI
Løsninger:
- Kør
az loginfor at opdatere legitimationsoplysninger - Verificér korrekt lejer:
az account set --subscription <subscription-id> - Tjek tokens gyldighed:
az account get-access-token --resource https://api.fabric.microsoft.com
Timeout for forespørgsler
Problem: Forespørgsler går ud på tid på store tabeller
Løsninger:
- Aktivér
LargeTableSupport=true - Juster
PageSizeBytesfor optimal chunk-størrelse - Aktivér asynkron prefetch:
EnableAsyncPrefetch=1 - Brug
LIMITklausulen til at begrænse resultatstørrelsen
Aktiver logning
Når du fejlsøger problemer, kan det hjælpe dig at aktivere detaljeret logning med at identificere den grundlæggende årsag til problemerne. Du kan aktivere logging via forbindelsesstrengen.
For at muliggøre detaljeret logning:
LogLevel=DEBUG;LogFile=C:\temp\odbc_driver_debug.log;
Log-niveauer:
-
DEBUG: Detaljeret fejlfinding og det mest udførlige driverlog-niveau -
INFO: Generel information (standard) -
WARN: Kun advarsler -
ERROR: Kun fejl
ODBC-sporing
For lavniveau-diagnostik kan du aktivere Windows ODBC-sporing for at fange detaljerede ODBC API-kald og driveradfærd. Husk at slå sporing fra, når det ikke er nødvendigt, for at opretholde optimal ydeevne.
For at aktivere ODBC-sporing:
- Åbn
odbcad32.exe - Gå til fanen "Tracing"
- Sæt sporfilsti (f.eks.
C:\temp\odbctrace.log) - Vælg "Start sporing nu"
- Gengiv nummeret
- Vælg "Stop Tracing Now"