Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
ODBC (Open Database Connectivity) is een veelgebruikte standaard waarmee clienttoepassingen verbinding kunnen maken met en kunnen werken met gegevens uit databases en big data-platforms.
De Microsoft ODBC Driver for Fabric Data Engineering stelt je in staat om Spark-workloads in Fabric te verbinden, te bevragen en te beheren met de betrouwbaarheid en eenvoud van de ODBC-standaard. Gebouwd op Fabric's Livy API's, biedt de driver veilige en flexibele Spark SQL-connectiviteit naar je C/C++, .NET, Python en andere ODBC-compatibele applicaties en BI-tools.
Belangrijkste kenmerken
- ODBC 3.x-compatibel: volledige implementatie van ODBC 3.x-specificatie
- Microsoft Entra ID verificatie: meerdere verificatiestromen, waaronder Azure CLI, interactieve, clientreferenties, verificatie op basis van certificaten en toegangstokenverificatie
- Ondersteuning voor Spark SQL-query's: Directe uitvoering van Spark SQL-instructies
- Uitgebreide ondersteuning voor gegevenstypen: ondersteuning voor alle Spark SQL-gegevenstypen, waaronder complexe typen (ARRAY, MAP, STRUCT)
- Opnieuw gebruiken van sessies: ingebouwd sessiebeheer voor verbeterde prestaties
- High-concurrency-modus: Kiezen voor gedeelde, warme server-side Livy-sessies om de opstartlatentie van de verbinding en de Spark-cluster sprawl te verminderen
- Ondersteuning voor grote tabellen: Geoptimaliseerde verwerking voor grote resultatensets met configureerbare paginaformaten
- Asynchrone prefetch: laden van achtergrondgegevens voor verbeterde prestaties
- Proxyondersteuning: HTTP-proxyconfiguratie voor bedrijfsomgevingen
- Ondersteuning voor meerdere schema's in een lakehouse: Maak verbinding met een specifiek schema binnen een lakehouse
- OneLake-integratie: Toegang tot lakehouse-gegevens die in OneLake zijn opgeslagen, inclusief tabellen over meerdere schema's, via een uniforme ODBC-interface zonder aparte opslagconfiguratie
- Omgevingsitems ondersteunen: Fabric omgevingsitems koppelen tijdens het uitvoeren van taken om werkruimtebibliotheken, Spark-eigenschappen en variabelen toe te passen op elke sessie
- Custom Spark-configuratie: Spark-configuratie-eigenschappen rechtstreeks doorgeven via de verbindingsreeks om sessiegedrag af te stemmen
Opmerking
In opensource Apache Spark worden database en schema synoniem gebruikt. Bijvoorbeeld, het uitvoeren van SHOW SCHEMAS of SHOW DATABASES in een Fabric-notitieboek geeft hetzelfde resultaat — een lijst van alle schema’s in het lakehouse.
Vereiste voorwaarden
Voordat u het Microsoft ODBC-stuurprogramma voor Microsoft Fabric Data Engineering gebruikt, moet u ervoor zorgen dat u het volgende hebt:
- Besturingssysteem: Windows 10/11 of Windows Server 2016+
- Fabric Access: Toegang tot een Fabric werkruimte
- Microsoft Entra ID referenties: juiste referenties voor verificatie
- Workspace- en lakehouse-id’s: GUID-id’s voor uw Fabric-workspace en -lakehouse
- Azure CLI (optioneel): vereist voor azure CLI-verificatiemethode
Downloaden en MSI-installatie
- Download het Microsoft ODBC-stuurprogramma voor het MSI-pakket voor Microsoft Fabric Data Engineering
- Dubbelklik op
MicrosoftFabricODBCDriver-2.0.msi. - Volg de installatiewizard en accepteer de gebruiksrechtovereenkomst
- Installatiemap kiezen (standaard:
C:\Program Files\Microsoft ODBC Driver for Microsoft Fabric Data Engineering\) - De installatie voltooien
Stille installatie
# Silent installation
msiexec /i "MicrosoftFabricODBCDriver-2.0.msi" /quiet
# Installation with logging
msiexec /i "MicrosoftFabricODBCDriver-2.0.msi" /l*v install.log
Installatie controleren
Controleer na de installatie of het stuurprogramma is geregistreerd:
- Uitvoeren
odbcad32.exe(ODBC-gegevensbronbeheer) - Ga naar het tabblad Drivers
- Controleer of het Microsoft ODBC-stuurprogramma voor Microsoft Fabric Data Engineering wordt vermeld
Snelstartvoorbeeld
Dit voorbeeld laat zien hoe je verbinding maakt met Fabric en een query uitvoert met de Microsoft ODBC Driver for Microsoft Fabric Data Engineering. Voordat u deze code uitvoert, moet u ervoor zorgen dat u de vereisten hebt voltooid en het stuurprogramma hebt geïnstalleerd.
C/C++ voorbeeld
#include <windows.h>
#include <sql.h>
#include <sqlext.h>
#include <iostream>
int main() {
SQLHENV environment = SQL_NULL_HENV;
SQLHDBC connection = SQL_NULL_HDBC;
SQLHSTMT statement = SQL_NULL_HSTMT;
SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &environment);
SQLSetEnvAttr(
environment,
SQL_ATTR_ODBC_VERSION,
(SQLPOINTER)SQL_OV_ODBC3,
0);
SQLAllocHandle(SQL_HANDLE_DBC, environment, &connection);
const char* connectionString =
"DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
"WorkspaceId=<workspace-id>;"
"LakehouseId=<lakehouse-id>;"
"AuthFlow=AZURE_CLI;";
SQLRETURN result = SQLDriverConnectA(
connection,
NULL,
(SQLCHAR*)connectionString,
SQL_NTS,
NULL,
0,
NULL,
SQL_DRIVER_NOPROMPT);
if (SQL_SUCCEEDED(result)) {
SQLAllocHandle(SQL_HANDLE_STMT, connection, &statement);
result = SQLExecDirectA(
statement,
(SQLCHAR*)"SELECT 'Hello from Fabric!' AS message",
SQL_NTS);
if (SQL_SUCCEEDED(result)) {
char message[256];
SQLLEN indicator;
while (SQLFetch(statement) == SQL_SUCCESS) {
SQLGetData(
statement,
1,
SQL_C_CHAR,
message,
sizeof(message),
&indicator);
std::cout << message << std::endl;
}
}
SQLFreeHandle(SQL_HANDLE_STMT, statement);
SQLDisconnect(connection);
}
SQLFreeHandle(SQL_HANDLE_DBC, connection);
SQLFreeHandle(SQL_HANDLE_ENV, environment);
return 0;
}
Python-voorbeeld
import pyodbc
# Connection string with required parameters
connection_string = (
"DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
"WorkspaceId=<workspace-id>;"
"LakehouseId=<lakehouse-id>;"
"AuthFlow=AZURE_CLI;"
)
# Connect and execute query
conn = pyodbc.connect(connection_string, timeout=30)
cursor = conn.cursor()
cursor.execute("SELECT 'Hello from Fabric!' as message")
row = cursor.fetchone()
print(row.message)
conn.close()
.NET-voorbeeld
using System.Data.Odbc;
// Connection string with required parameters
string connectionString =
"DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};" +
"WorkspaceId=<workspace-id>;" +
"LakehouseId=<lakehouse-id>;" +
"AuthFlow=AZURE_CLI;";
using var connection = new OdbcConnection(connectionString);
await connection.OpenAsync();
Console.WriteLine("Connected successfully!");
using var command = new OdbcCommand("SELECT 'Hello from Fabric!' as message", connection);
using var reader = await command.ExecuteReaderAsync();
if (await reader.ReadAsync())
{
Console.WriteLine(reader.GetString(0));
}
Indeling van verbindingstekenreeks
Basisverbindingsreeks
Het Microsoft ODBC-stuurprogramma voor Microsoft Fabric Data Engineering maakt gebruik van de volgende verbindingsreeksindeling:
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};<parameter1>=<value1>;<parameter2>=<value2>;...
Onderdelen van verbindingsreeks
| Onderdeel | Description | Example |
|---|---|---|
| STUURPROGRAMMA | ODBC-stuurprogramma-id | {Microsoft ODBC Driver for Microsoft Fabric Data Engineering} |
| WorkspaceId | Fabric-werkruimte-id (GUID) | xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx |
| LakehouseId | Fabric lakehouse-id (GUID) | xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx |
| AuthFlow | Verificatiemethode |
AZURE_CLI, INTERACTIVE, CLIENT_CREDENTIAL, CLIENT_CERTIFICATE, , ACCESS_TOKEN, FILE_TOKEN |
Voorbeeld van verbindingsreeksen
Basisverbinding (Azure CLI-verificatie)
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI
Met prestatieopties
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;ReuseSession=true;LargeTableSupport=true;PageSizeBytes=18874368
Met logboekregistratie
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;LogLevel=DEBUG;LogFile=odbc_driver.log
Met modus voor hoge gelijktijdigheid
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;LivyMode=HighConcurrency;SessionTag=bi-dashboard
Zie de sectie High-Concurrency (HC) Mode voor volledige configuratierichtlijnen.
Authenticatie
Het Microsoft ODBC-stuurprogramma voor Microsoft Fabric Data Engineering ondersteunt meerdere verificatiemethoden via Microsoft Entra ID (voorheen Azure Active Directory). Verificatie wordt geconfigureerd met behulp van de AuthFlow parameter in de verbindingsreeks.
Verificatiemethoden
| AuthFlow-waarde | Description |
|---|---|
CLIENT_CREDENTIAL (0) |
Serviceprincipe met cliëntgeheim. Aliasnaam: CLIENT_SECRET_CREDENTIAL. |
BROWSER_BASED (1) |
Interactieve browsergebaseerde authenticatie. Aliasnaam: INTERACTIVE. |
AZURE_CLI (2) |
Ontwikkeling met Azure CLI-credentials. |
CLIENT_CERTIFICATE_CREDENTIAL (3) |
Dienstdirecteur met certificaat. Alias: CLIENT_CERTIFICATE. |
AUTH_ACCESS_TOKEN (4) |
Vooraf verkregen houder toegangstoken. Alias: ACCESS_TOKEN. |
FILE_TOKEN (5) |
Leet een authenticatietoken uit een bestand. |
Je kunt authenticatiewaarden specificeren in snake_case met hoofdletters, PascalCase of in numerieke vorm. De driver accepteert ook korte aliassen zoals Browser, , , CLI, Certificate, Token, en FileInteractive. De bestuurder negeert onderscores bij het vergelijken van waarden.
Azure CLI-verificatie
Geschikt voor: Ontwikkeling en interactieve toepassingen
# Python Example
connection_string = (
"DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
"WorkspaceId=<workspace-id>;"
"LakehouseId=<lakehouse-id>;"
"AuthFlow=AZURE_CLI;"
"Scope=https://api.fabric.microsoft.com/.default;"
)
conn = pyodbc.connect(connection_string)
vereisten:
- Azure CLI geïnstalleerd:
az --version - Ingelogd:
az login
Interactieve browserverificatie
Geschikt voor: gebruikersgerichte toepassingen
# Python Example
connection_string = (
"DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
"WorkspaceId=<workspace-id>;"
"LakehouseId=<lakehouse-id>;"
"AuthFlow=INTERACTIVE;"
"TenantId=<tenant-id>;"
"Scope=https://api.fabric.microsoft.com/.default;"
)
conn = pyodbc.connect(connection_string)
Gedrag:
- Hiermee opent u een browservenster voor gebruikersverificatie
- Referenties worden in de cache opgeslagen voor volgende verbindingen
Verificatie van clientreferenties (service-principal)
Geschikt voor: Geautomatiseerde services en achtergrondtaken
connection_string = (
"DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
"WorkspaceId=<workspace-id>;"
"LakehouseId=<lakehouse-id>;"
"AuthFlow=CLIENT_CREDENTIAL;"
f"TenantId={tenant_id};"
f"ClientId={client_id};"
f"ClientSecret={client_secret};"
)
Vereiste parameters
-
TenantId: Azure-tenant-id -
ClientId: Toepassings-ID (client) van Microsoft Entra ID -
ClientSecret: Clientgeheim van Microsoft Entra-id
Beste praktijken
- Geheimen veilig opslaan (Azure Key Vault, omgevingsvariabelen)
- Beheerde identiteiten gebruiken indien mogelijk
- Geheimen regelmatig roteren
Verificatie op basis van certificaat
Geschikt voor: Bedrijfstoepassingen waarvoor verificatie op basis van certificaten is vereist
connection_string = (
"DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
"WorkspaceId=<workspace-id>;"
"LakehouseId=<lakehouse-id>;"
"AuthFlow=CLIENT_CERTIFICATE;"
"TenantId=<tenant-id>;"
"ClientId=<client-id>;"
"CertificatePath=C:\\certs\\mycert.pfx;"
"CertificatePassword=<password>;"
)
Vereiste parameters:
-
TenantId: Azure-tenant-id -
ClientId: Applicatie-ID (client) -
CertificatePath: Pad naar PFX-/PKCS12-certificaatbestand -
CertificatePassword: Certificaatwachtwoord
Verificatie van toegangstokens
Geschikt voor: Scenario's voor aangepaste verificatie
# Acquire token through custom mechanism
access_token = acquire_token_from_custom_source()
connection_string = (
"DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
"WorkspaceId=<workspace-id>;"
"LakehouseId=<lakehouse-id>;"
"AuthFlow=ACCESS_TOKEN;"
f"AccessToken={access_token};"
)
Authenticatie met bestandstoken
Gebruik bestandstokenauthenticatie voor containerisatieomgevingen en geautomatiseerde pijplijnen waarbij een ander proces een bearertoken schrijft naar het bekende tokenbestand van de driver:
connection_string = (
"DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
"WorkspaceId=<workspace-id>;"
"LakehouseId=<lakehouse-id>;"
"AuthFlow=FILE_TOKEN;"
)
De driver lost de tokenbestandslocatie op op Windows en Linux.
Cross-driver eigenschapsaliasen
De ODBC-driver accepteert geselecteerde ADONET- en JDBC-eigendomsnamen naast native ODBC-namen. Deze ondersteuning kan het wisselen van verbindingsstrings verminderen wanneer je tussen Fabric-drivers wisselt.
| ADO.NET- of JDBC-eigenschap | ODBC-equivalent |
|---|---|
FabricWorkspaceID |
WorkspaceId |
FabricLakehouseID |
LakehouseId |
LivySessionTimeoutSeconds |
Time-out voor verbinding |
LivyStatementTimeoutSeconds |
Time-out voor instructie |
ConnectionPoolEnabled |
Pool ingeschakeld |
De driver verwerkt 17 stuurprogramma-overstijgende aliassen bij het tot stand brengen van de verbinding.
Configuratieparameters
Benodigde parameters
Deze parameters moeten aanwezig zijn in elke verbindingsreeks:
| Kenmerk | Typologie | Description | Example |
|---|---|---|---|
| WorkspaceId | UUID (universeel unieke identificator) | Fabric-werkruimte-id | 4bbf89a8-... |
| LakehouseId | UUID (universeel unieke identificator) | Fabric lakehouse-id | d8faa650-... |
| AuthFlow | Snaar / Touwtje | Type verificatiestroom | AZURE_CLI |
Optionele parameters
Verbindingsinstellingen
| Kenmerk | Typologie | Verstek | Description |
|---|---|---|---|
| gegevensbank | Snaar / Touwtje | Geen | Eerste database voor klassieke modus. HC-modus past dit niet automatisch toe; voer USE <database> uit na het maken van verbinding of gebruik volledig gekwalificeerde tabelnamen. |
| Scope | Snaar / Touwtje | https://api.fabric.microsoft.com/.default |
OAuth-bereik |
Prestatie-instellingen
| Kenmerk | Typologie | Verstek | Description |
|---|---|---|---|
| Hergebruik sessie | Booleaans | true |
Bestaande Spark-sessie opnieuw gebruiken |
| OndersteuningVoorGroteTabellen | Booleaans | false |
Optimalisaties inschakelen voor grote resultatensets |
| EnableAsyncPrefetch | Booleaans | false |
Achtergrondgegevens vooraf ophalen |
| PageSizeBytes | Integer |
18874368 (18 MB) |
Paginaformaat voor paginering van resultaten (1-18 MB) |
Instellingen voor logboekregistratie
| Kenmerk | Typologie | Verstek | Description |
|---|---|---|---|
| Logniveau | Snaar / Touwtje | INFO |
Logniveau: DEBUG, WARN, ERROR of INFO. Gebruik DEBUG voor gedetailleerde driverdiagnose. |
| Logbestand | Snaar / Touwtje | odbc_driver.log |
Pad naar logboekbestand (absoluut of relatief) |
Proxy-instellingen
| Kenmerk | Typologie | Verstek | Description |
|---|---|---|---|
| UseProxy | Booleaans | false |
Proxy inschakelen |
| ProxyHost | Snaar / Touwtje | Geen | Proxyhostnaam |
| ProxyPort | Integer | Geen | Proxypoort |
| ProxyUsername | Snaar / Touwtje | Geen | Gebruikersnaam voor proxyverificatie |
| ProxyPassword | Snaar / Touwtje | Geen | Wachtwoord voor proxyverificatie |
Instellingen voor hoge gelijktijdigheid (HC)
Gebruik deze parameters om high-concurrency (HC) modus in te schakelen en te configureren. HC-modus moet worden ingeschakeld. Als je niet instelt LivyMode of UseHighConcurrency, gebruikt de driver het klassieke pad voor één sessie. Voor richtlijnen en voorbeelden raadpleegt u High-concurrency (HC) mode.
| Kenmerk | Typologie | Verstek | Description |
|---|---|---|---|
LivyMode |
Snaar / Touwtje | Niet ingesteld | Regelt het verkrijgen van sessies. Ondersteunde waarden zijn Classic, HighConcurrencyen Auto.
Auto Gebruikt momenteel het klassieke pad. |
UseHighConcurrency |
Booleaans | false |
Schakelt HC-modus in als alternatief voor het instellen van LivyMode=HighConcurrency |
SessionTag |
Snaar / Touwtje | Geen | Biedt een serverzijdige verpakkingshint. Verbindingen moeten een bijpassende server-side configuratie gebruiken om een warme Livy-sessie te delen. |
IdempotencyKey |
Snaar / Touwtje | Geen | Biedt een door de client gegenereerde sleutel voor veilige nieuwe pogingen om HC te verkrijgen. De driver valideert de tekenset en registreert nooit de waarde. |
EnvironmentId |
Snaar / Touwtje | Geen | Specificeert de Fabric-omgevingsidentificatie die wordt verzonden als spark.fabric.environmentDetails in de HC-acquisitieconfiguratie. |
HeartbeatTimeoutInSecond |
Integer | Standaardserver | Stelt de inactiviteitstime-out van de HC-sessie aan de serverzijde in, in seconden. De waarde moet een positief geheel getal zijn. |
AcquireTimeoutSeconds |
Integer | 300 |
Bepaalt hoe lang de bestuurder wacht tot een HC-sessie de Idle staat bereikt, in seconden. De waarde moet een positief geheel getal zijn. |
conf.<key> |
Snaar / Touwtje | Geen | Specificeert een Spark-configuratie-override die wordt verzonden in het HC-acquisitieverzoek. Bijvoorbeeld: conf.spark.sql.shuffle.partitions=200. |
Modusprioriteit en validatie
-
LivyModeHeeft voorrang bovenUseHighConcurrencywanneer je beide parameters instelt. - Parameterwaarden zijn niet hoofdlettergevoelig.
-
UseHighConcurrencyaccepteerttrue,1, ,yesofonom HC-modus in te schakelen. Het accepteertfalse,0, ,no, ofoffom HC-modus uit te schakelen. - Voor andere niet-lege waarden geeft een
SQLDriverConnectfoutmelding terug. DSN-onlySQLConnectregistreert de validatiefout en gebruikt het klassieke pad.
Compatibiliteitsinstellingen
De driver accepteert TenantPrincipal en PoolMax, inclusief hun omgevingsvariabele fallbacks, voor compatibiliteit met eerdere HC-configuraties. De driver parseert en valideert deze waarden, maar ze hebben geen invloed op het matchen van HC-sessies of de capaciteit van de runtimepool. Vertrouw er niet op voor huurdersisolatie of verbindingsbeperkingen.
Terugvalopties voor omgevingsvariabelen
De driver gebruikt de volgende omgevingsvariabelen alleen wanneer de bijbehorende DSN- of verbindingsstringparameter niet is ingesteld:
| Omgevingsvariabele | Verwijst naar |
|---|---|
FABRIC_ODBC_USE_HC |
UseHighConcurrency |
FABRIC_ODBC_WORKSPACE_ID |
WorkspaceId |
FABRIC_ODBC_LAKEHOUSE_ID |
LakehouseId |
FABRIC_ODBC_ENVIRONMENT_ID |
EnvironmentId |
FABRIC_ODBC_SESSION_TAG |
SessionTag |
FABRIC_ODBC_TENANT_PRINCIPAL |
TenantPrincipal (alleen compatibiliteit) |
FABRIC_ODBC_HC_HEARTBEAT_SECONDS |
HeartbeatTimeoutInSecond |
FABRIC_ODBC_HC_ACQUIRE_TIMEOUT |
AcquireTimeoutSeconds |
FABRIC_ODBC_HC_POOL_MAX |
PoolMax (alleen compatibiliteit) |
Voor FABRIC_ODBC_USE_HC herkent inschakeling alleen voor omgevingen true, 1 of yes (ongeacht hoofdletters en kleine letters). Andere waarden zorgen ervoor dat HC uitgeschakeld blijft. De on en off aliasen gelden alleen voor DSN- en verbindingsstringwaarden.
Omgevingsinstellingen
U kunt een Fabric omgevingsitem verbinden aan de Spark-sessie die door de driver is gestart. De bibliotheken, Spark-eigenschappen en variabelen van de geselecteerde omgeving worden automatisch toegepast wanneer de sessie wordt gemaakt.
| Kenmerk | Typologie | Verstek | Description |
|---|---|---|---|
| Omgevings-ID | UUID (universeel unieke identificator) | Geen | Fabric omgevingsitem-id (GUID) die moet worden toegepast tijdens het maken van een Spark-sessie |
Voorbeeld verbindingsreeks met een omgevingselement:
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;EnvironmentId=<environment-id>
Opmerking
De omgeving wordt toegepast wanneer de Spark-sessie wordt gestart. Als u ook aangepaste Spark-configuratie-eigenschappen opgeeft, hebben eigenschappen op sessieniveau voorrang op de standaardinstellingen van de omgeving.
Aangepaste Spark-configuratie
U kunt spark-configuratie-eigenschappen rechtstreeks doorgeven in de verbindingsreeks. Elke parameter waaraan spark. wordt voorafgegaan, wordt automatisch toegepast op de Spark-sessie tijdens het maken, zodat u de standaardinstellingen voor werkruimten of runtime kunt overschrijven.
Voorbeeld van Spark-configuraties:
spark.sql.shuffle.partitions=200
spark.sql.adaptive.enabled=true
spark.sql.autoBroadcastJoinThreshold=10485760
Voorbeeld verbindingsreeks met aangepaste Spark-eigenschappen:
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;spark.sql.shuffle.partitions=200;spark.sql.adaptive.enabled=true
Opmerking
Spark-configuratie-eigenschappen worden toegepast wanneer de sessie wordt gemaakt. Ze zijn van toepassing op alle query's die worden uitgevoerd binnen die sessie en overschrijven de standaardinstellingen voor de omgeving of runtime voor dezelfde eigenschappen.
Modus voor hoge gelijktijdigheid (HC)
Met de modus voor hoge gelijktijdigheid (HC) kunnen ODBC-verbindingen naar dezelfde werkruimte en hetzelfde lakehouse verbinding maken met gedeelde, actieve Livy Spark-sessies aan de serverzijde, in plaats van voor elke verbinding een afzonderlijk cluster in te richten. Gebruik het voor workloads zoals BI-dashboards, notebook-kernels en ETL-fan-out die veel kortstondige verbindingen openen en serverbeheerde Spark-capaciteit kunnen delen.
HC-modus moet worden ingeschakeld. Als je geen HC-instelling instelt, gebruikt de driver het klassieke pad voor één sessie.
Een verbindingsmodus kiezen
Gebruik HC-modus wanneer:
- Je werklast opent veel kortstondige ODBC-verbindingen, bijvoorbeeld BI-dashboards, kernels van notebooks of ETL-fan-out.
- Verbindingen richten zich op dezelfde werkruimte en lakehouse en kunnen een serverbeheerde Spark-sessie delen.
- Het verminderen van de koude startlatentie per verbinding is belangrijk.
Gebruik de klassieke modus wanneer:
- Elke verbinding vereist een geïsoleerde Spark-sessie vanwege verschillende Spark-configuraties of strikte resource-isolatie.
- Het Fabric Livy-eindpunt voor de doelwerkruimte en het lakehouse biedt geen ondersteuning voor HC-modus.
Schakel de modus voor hoge gelijktijdigheid in
Voeg een parameter voor de modus voor hoge gelijktijdigheid toe aan de DSN of verbindingsreeks.
Aanbevolen: Set LivyMode
Gebruik LivyMode dit om expliciet de sessie-acquisitiemodus te selecteren:
LivyMode=HighConcurrency
Ondersteunde waarden zijn Classic, HighConcurrencyen Auto. Waarden zijn niet hoofdlettergevoelig.
Auto Selecteert momenteel de klassieke modus.
Alternatief: Set UseHighConcurrency
Gebruik de Booleaanse instelling voor compatibiliteit met bestaande configuraties:
UseHighConcurrency=true
Om de high-concurrency-modus in te schakelen, gebruikt u true, 1, yes of on. Om het uit te schakelen, gebruik false, 0, no, of off. Waarden zijn niet hoofdlettergevoelig.
SQLDriverConnect verwerpt andere niet-lege waarden met SQLSTATE HY024. DSN-only SQLConnect registreert de validatiefout en gebruikt de klassieke modus.
Opmerking
Als je beide parameters instelt, LivyMode krijgt voorrang boven UseHighConcurrency.
Vereiste parameters in HC-modus
HC-activatie vereist de volgende geldige identificaties:
| Kenmerk | Aantekeningen |
|---|---|
WorkspaceId |
Moet een geldige Fabric workspace GUID zijn. |
LakehouseId |
Moet een geldige Fabric lakehouse GUID zijn. |
Neem het op SessionTag omdat het server-side matching voor warme sessies beïnvloedt.
Sessiekoppeling
HC-modus garandeert niet dat elke verbinding een bestaande sessie hergebruikt. Voor elk sessie-acquisitieverzoek stuurt de driver het volgende:
- De
SessionTag-waarde. - De effectieve Spark-configuratie, inclusief
conf.*instellingen enEnvironmentId.
De Fabric Livy-dienst beoordeelt deze waarden en beslist of de verbinding aan een warme sessie wordt gekoppeld of een nieuwe sessie wordt aangemaakt. Om het hergebruik van sessies te verbeteren, gebruik consistente waarden over verbindingen die bedoeld zijn om serverbeheerde Spark-capaciteit te delen.
Voorbeeld van verbindingsreeksen
Minimale HC-verbinding (Azure CLI-verificatie):
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;LivyMode=HighConcurrency;SessionTag=bi-dashboard
HC met aangepaste timeouts:
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;LivyMode=HighConcurrency;SessionTag=etl-prod;AcquireTimeoutSeconds=180;HeartbeatTimeoutInSecond=600
HC met omgevingsvariabelen en overschrijvingen van de Spark-configuratie:
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;LivyMode=HighConcurrency;EnvironmentId=<environment-id>;SessionTag=ml-team;conf.spark.sql.shuffle.partitions=200;conf.spark.executor.memory=8g
Python (pyodbc):
import pyodbc
conn = pyodbc.connect(
"DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
"WorkspaceId=<workspace-id>;"
"LakehouseId=<lakehouse-id>;"
"AuthFlow=AZURE_CLI;"
"LivyMode=HighConcurrency;"
"SessionTag=notebook-kernel"
)
Configureer HC-modus in een DSN
Je kunt HC-instellingen opslaan in een DSN in plaats van ze in elke verbindingsreeks te herhalen. Wanneer een verbindingsreeks geen waarde specificeert, leest de driver deze instellingen uit het DSN:
LivyModeUseHighConcurrencyEnvironmentIdSessionTagIdempotencyKeyHeartbeatTimeoutInSecondAcquireTimeoutSeconds
Het stuurprogramma leest ook de instellingen TenantPrincipal en PoolMax die uitsluitend voor compatibiliteit zijn. Om deze instellingen op te slaan, bewerk je het DSN in odbcad32.exe of gebruik SQLWritePrivateProfileString. Gebruik de parameternamen in de HC-instellingentabel.
Belangrijk
De driver leest conf.* Spark-configuratieoverschrijvingen niet uit de DSN. Voeg ze toe aan de verbindingsreeks tijdens runtime of injecteer ze voordat je aanroeptSQLDriverConnect.
Schakel HC-modus uit
Je kunt het verkrijgen van nieuwe HC-sessies uitschakelen zonder het stuurprogramma opnieuw te implementeren. Gebruik de methode die overeenkomt met hoe je HC-modus hebt ingeschakeld:
| bron voor HC-configuratie | Hoe HC-modus uit te schakelen |
|---|---|
| Alleen omgevingsvariabele | Stel FABRIC_ODBC_USE_HC=false, of verwijder de variabele. |
| DSN | Stel LivyMode=Classicin. Alternatief verwijder LivyMode en zet UseHighConcurrency=false. |
| Verbindingsstring | Stel LivyMode=Classic, of verwijder de HC-parameters. |
Connection-string en DSN-instellingen krijgen voorrang boven de omgevingsvariabele fallback. Deze veranderingen hebben alleen invloed op nieuwe verbindingen. Bestaande HC-sessies gaan door tot ze worden uitgebracht.
Begrijp het uitvoerende gedrag van HC
-
Validatie:
SQLDriverConnectverwerpt ongeldige HC Booleaanse en positieve-gehele getallen met SQLSTATEHY024. Het verwerpt een ongeldig(e)LivyModeen ongeldige of te grote waarden voorWorkspaceId,LakehouseIdenIdempotencyKeymet SQLSTATEHY000. Een te grote compatibiliteitswaardeTenantPrincipalresulteert ook inHY000. Voor DSN-onlySQLConnect, registreert de driver gewone HC-validatiefouten en gebruikt de klassieke modus. Te grote beveiligingskritieke waarden zorgen er nog steeds voor dat de verbinding mislukt. -
Gevoelige gegevens: De driver sluit andere gevoelige velden uit of verwijdert
IdempotencyKeydeze uit HC-logs en diagnostische output. - Annuleren: Het annuleren van een statement gebeurt coöperatief. Het serverwerk dat al in uitvoering is, wordt schoon afgerond in plaats van direct te worden beëindigd.
- Stroomonderbraken: HC- en klassieke modi gebruiken aparte stroomonderbrekers. Het uitputten van de ene modus beïnvloedt de andere niet.
-
Initiële database: HC-verbindingen voeren de initiële
USEinstructie voor deDatabaseparameter niet uit. VoerUSE <database>uit nadat u verbinding hebt gemaakt of gebruik volledig gekwalificeerde tabelnamen. -
Diagnostiek: Stel
LogLevel=DEBUGin om het verkrijgen van HC, polling, vrijgave en beslissingen over fouttoewijzing te loggen. Voor gerichte probleemoplossing kun jeLIVY_HC_VERBOSE=1instellen op het opnemen van extra opgeschoonde HC HTTP-diagnostiek.
Configureer een DSN
Een systeem-DSN maken
ODBC-beheerder openen
%SystemRoot%\System32\odbcad32.exeNieuwe systeem-DSN maken
- Ga naar het tabblad Systeem-DSN
- Selecteer 'Toevoegen'
- Selecteer 'Microsoft ODBC-stuurprogramma voor Microsoft Fabric Data Engineering'
- Selecteer Voltooien
DSN-instellingen configureren
-
Naam van gegevensbron: voer een unieke naam in (bijvoorbeeld
FabricODBC) - Beschrijving: Optionele beschrijving
- Werkruimte-ID: GUID van uw Fabric-werkruimte
- Lakehouse-id: Uw Fabric Lakehouse-GUID
- Verificatie: verificatiemethode selecteren
- Omgevings-id (optioneel): Voer de GUID in van het Fabric omgevingsitem voor koppeling tijdens het maken van de sessie
-
Livy-modus (optioneel): Ingesteld op
HighConcurrencyom HC-modus in te schakelen - Sessietag (optioneel): Voer een niet-gevoelig operationeel label in voor HC-sessiematching
- Aanvullende instellingen configureren indien nodig
-
Naam van gegevensbron: voer een unieke naam in (bijvoorbeeld
Verbinding testen
- Selecteer Verbinding testen om de instellingen te verifiëren
- Selecteer OK om op te slaan
DSN gebruiken in toepassingen
# Python - Connect using DSN
conn = pyodbc.connect("DSN=FabricODBC")
// .NET - Connect using DSN
using var connection = new OdbcConnection("DSN=FabricODBC");
await connection.OpenAsync();
Voorbeelden van gebruik
Eenvoudige verbinding en opvraging
Python
import pyodbc
def main():
connection_string = (
"DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
"WorkspaceId=<workspace-id>;"
"LakehouseId=<lakehouse-id>;"
"AuthFlow=AZURE_CLI;"
"ReuseSession=true;"
)
conn = pyodbc.connect(connection_string, timeout=30)
cursor = conn.cursor()
print("Connected successfully!")
# Show available tables
print("\nAvailable tables:")
cursor.execute("SHOW TABLES")
for row in cursor.fetchall():
print(f" {row}")
# Query data
print("\nQuery results:")
cursor.execute("SELECT * FROM employees LIMIT 10")
# Print column names
columns = [desc[0] for desc in cursor.description]
print(f"Columns: {columns}")
# Print rows
for row in cursor.fetchall():
print(row)
conn.close()
if __name__ == "__main__":
main()
.NET
using System.Data.Odbc;
class Program
{
static async Task Main(string[] args)
{
string connectionString =
"DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};" +
"WorkspaceId=<workspace-id>;" +
"LakehouseId=<lakehouse-id>;" +
"AuthFlow=AZURE_CLI;" +
"ReuseSession=true;";
using var connection = new OdbcConnection(connectionString);
await connection.OpenAsync();
Console.WriteLine("Connected successfully!");
// Show available tables
Console.WriteLine("\nAvailable tables:");
using (var cmd = new OdbcCommand("SHOW TABLES", connection))
using (var reader = await cmd.ExecuteReaderAsync())
{
while (await reader.ReadAsync())
{
Console.WriteLine($" {reader.GetString(0)}");
}
}
// Query data
Console.WriteLine("\nQuery results:");
using (var cmd = new OdbcCommand("SELECT * FROM employees LIMIT 10", connection))
using (var reader = await cmd.ExecuteReaderAsync())
{
// Print column names
var columns = new List<string>();
for (int i = 0; i < reader.FieldCount; i++)
{
columns.Add(reader.GetName(i));
}
Console.WriteLine($"Columns: {string.Join(", ", columns)}");
// Print rows
while (await reader.ReadAsync())
{
var values = new object[reader.FieldCount];
reader.GetValues(values);
Console.WriteLine(string.Join("\t", values));
}
}
}
}
Werken met grote resultatensets
import pyodbc
connection_string = (
"DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
"WorkspaceId=<workspace-id>;"
"LakehouseId=<lakehouse-id>;"
"AuthFlow=AZURE_CLI;"
"LargeTableSupport=true;"
"PageSizeBytes=18874368;" # 18 MB pages
"EnableAsyncPrefetch=1;"
)
conn = pyodbc.connect(connection_string)
cursor = conn.cursor()
# Execute large query
cursor.execute("SELECT * FROM large_table")
# Process in batches
row_count = 0
while True:
rows = cursor.fetchmany(1000) # Fetch 1000 rows at a time
if not rows:
break
for row in rows:
# Process row
row_count += 1
if row_count % 10000 == 0:
print(f"Processed {row_count} rows")
print(f"Total rows processed: {row_count}")
conn.close()
Voer DML-instructies uit
bool executeDml(SQLHDBC connection, const char* sql, const char* description) {
SQLHSTMT statement = SQL_NULL_HSTMT;
SQLAllocHandle(SQL_HANDLE_STMT, connection, &statement);
std::cout << "Executing: " << description << std::endl;
SQLRETURN result = SQLExecDirectA(
statement,
(SQLCHAR*)sql,
SQL_NTS);
bool succeeded = SQL_SUCCEEDED(result);
if (succeeded) {
SQLLEN rowCount;
SQLRowCount(statement, &rowCount);
std::cout << "Rows affected: " << rowCount << std::endl;
}
SQLFreeHandle(SQL_HANDLE_STMT, statement);
return succeeded;
}
Gebruik executeDml met INSERT, UPDATE, of DELETE statements. Het gerapporteerde aantal rijen hangt ervan af of het resultaat een aantal bijgewerkte rijen bevat dat door het stuurprogramma wordt herkend.
Schema-ontdekking
import pyodbc
conn = pyodbc.connect(connection_string)
cursor = conn.cursor()
# List all tables
print("Tables in current default schema / database:")
cursor.execute("SHOW TABLES")
tables = cursor.fetchall()
for table in tables:
print(f" {table}")
# Describe table structure
print("\nTable structure for 'employees':")
cursor.execute("DESCRIBE employees")
for col in cursor.fetchall():
print(f" {col}")
# List schemas (for multi-schema Lakehouses)
print("\nAvailable schemas:")
cursor.execute("SHOW SCHEMAS")
for db in cursor.fetchall():
print(f" {db}")
conn.close()
Koppeling van gegevenstypen
Het stuurprogramma wijst Spark SQL-gegevenstypen toe aan ODBC SQL-typen:
| Spark SQL-type | ODBC SQL-type | C/C++ Type | Python-type | .NET-type |
|---|---|---|---|---|
| BOOLEAN | SQL_BIT | SQLCHAR | bool | bool |
| BYTE | SQL_TINYINT | SQLSCHAR | int | sbyte |
| KORTE | SQL_SMALLINT | SQLSMALLINT | int | short |
| INT | SQL_INTEGER | SQLINTEGER | int | int |
| LONG | SQL_BIGINT | SQLBIGINT | int | lang |
| FLOAT | SQL_REAL | SQLREAL | zweven | zweven |
| Dubbel | SQL_DOUBLE | SQLDOUBLE | zweven | dubbel |
| Decimaal | SQL_DECIMAL | SQLCHAR* | decimal.Decimal | decimal |
| STRING | SQL_VARCHAR | SQLCHAR* | Str | touw |
| VARCHAR(n) | SQL_VARCHAR | SQLCHAR* | Str | touw |
| CHAR(n) | SQL_CHAR | SQLCHAR* | Str | touw |
| BINARY | SQL_VARBINARY | SQLCHAR* | bytes | byte[] |
| DATE | SQL_TYPE_DATE | SQL_DATE_STRUCT | datetime.date | DateTime |
| TIMESTAMP | SQL_TYPE_TIMESTAMP | SQL_TIMESTAMP_STRUCT | datetime.datetime | DateTime |
| ARRAY | SQL_VARCHAR | SQLCHAR* | str (JSON) | touw |
| MAP | SQL_VARCHAR | SQLCHAR* | str (JSON) | touw |
| Structuur | SQL_VARCHAR | SQLCHAR* | str (JSON) | touw |
Integratie van BI-hulpprogramma's
Microsoft Excel
- Excel openen -> gegevens -> Gegevens ophalen -> uit andere bronnen -> van ODBC
- Selecteer uw geconfigureerde DSN (bijvoorbeeld
FabricODBC) - Verifiëren als hierom wordt gevraagd
- Door tabellen bladeren en selecteren
- Gegevens laden in excel-werkblad
Power BI Desktop
- Power BI Desktop openen -> Gegevens ophalen -> ODBC
- Selecteer uw geconfigureerde DSN
- Bladeren in gegevenscatalogus en tabellen selecteren
- Gegevens naar behoefte transformeren
- Visualisaties maken
SQL Server Management Studio (gekoppelde server)
-- Create linked server
EXEC sp_addlinkedserver
@server = 'FABRIC_LINKED_SERVER',
@srvproduct = 'Microsoft Fabric',
@provider = 'MSDASQL',
@datasrc = 'FabricODBC'
-- Configure RPC
EXEC master.dbo.sp_serveroption
@server = N'FABRIC_LINKED_SERVER',
@optname = N'rpc out',
@optvalue = N'true';
-- Query via linked server
SELECT * FROM OPENQUERY(FABRIC_LINKED_SERVER, 'SHOW TABLES');
SELECT * FROM OPENQUERY(FABRIC_LINKED_SERVER, 'SELECT * FROM employees LIMIT 20');
-- Execute statements
EXEC('SELECT * FROM employees LIMIT 10') AT FABRIC_LINKED_SERVER;
Probleemoplossingsproces
Deze sectie bevat richtlijnen voor het oplossen van veelvoorkomende problemen die kunnen optreden bij het gebruik van het Microsoft ODBC-stuurprogramma voor Microsoft Fabric Data Engineering.
Veelvoorkomende problemen
In de volgende secties worden veelvoorkomende problemen en hun oplossingen beschreven:
Verbindingsfouten
Probleem: Kan niet aansluiten op Fabric
Oplossingen:
- Controleer of werkruimte-ID en lakehouse-ID correcte GUID's zijn
- Azure CLI-verificatie controleren:
az account show - Zorg ervoor dat u over de juiste Fabric werkruimtemachtigingen beschikt
- Netwerkconnectiviteit en proxy-instellingen controleren
Authenticatiefouten
Probleem: verificatie mislukt met Azure CLI
Oplossingen:
- Voer
az loginuit om referentiegegevens te vernieuwen - Controleer de juiste tenant:
az account set --subscription <subscription-id> - Controleer de geldigheid van het token:
az account get-access-token --resource https://api.fabric.microsoft.com
Querytime-outs
Probleem: Time-outs van query's in grote datasets
Oplossingen:
-
LargeTableSupport=trueinschakelen - Aanpassen
PageSizeBytesvoor optimale segmentgrootte - Asynchrone prefetch inschakelen:
EnableAsyncPrefetch=1 - Gebruik
LIMITclausule om de resultaatgrootte te beperken
Logboekregistratie inschakelen
Bij het oplossen van problemen kan het inschakelen van gedetailleerde logboekregistratie u helpen bij het identificeren van de hoofdoorzaak van problemen. U kunt logboekregistratie inschakelen via de verbindingsreeks.
Gedetailleerde logboekregistratie inschakelen:
LogLevel=DEBUG;LogFile=C:\temp\odbc_driver_debug.log;
Logboekniveaus:
-
DEBUG: Gedetailleerde debug-informatie en het uitgebreidste logniveau voor het stuurprogramma -
INFO: Algemene informatie (standaard) -
WARN: alleen waarschuwingen -
ERROR: alleen fouten
ODBC-tracering
Voor diagnostische gegevens op laag niveau kunt u Windows ODBC-tracering inschakelen om gedetailleerde ODBC-API-aanroepen en stuurprogrammagedrag vast te leggen. Vergeet niet om tracering uit te schakelen wanneer u niet nodig bent om optimale prestaties te behouden.
ODBC-tracering inschakelen:
-
odbcad32.exeopenen - Ga naar het tabblad Tracering
- Pad naar traceringsbestand instellen (bijvoorbeeld
C:\temp\odbctrace.log) - Start nu met traceren
- Reproduceer het probleem
- Selecteer Nu stoppen met traceren