Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
ODBC (Open Database Connectivity) ist ein weit verbreiteter Standard, mit dem Clientanwendungen eine Verbindung mit Daten aus Datenbanken und Big Data-Plattformen herstellen und damit arbeiten können.
Der Microsoft ODBC Driver for Fabric Data Engineering ermöglicht es Ihnen, Spark-Workloads in Fabric mit der Zuverlässigkeit und Einfachheit des ODBC-Standards zu verbinden, abzufragen und zu verwalten. Der Treiber basiert auf den Livy-APIs von Fabric und bietet sichere und flexible Spark-SQL-Konnektivität zu Ihren C/C++-, .NET-, Python- und anderen ODBC-kompatiblen Anwendungen unter Linux.
Wichtigste Funktionen
- ODBC 3.x-konform: Vollständige Implementierung der ODBC 3.x-Spezifikation.
- Microsoft Entra ID-Authentifizierung: Mehrere Authentifizierungsflüsse, einschließlich Azure CLI, Client-Zugangsdaten, zertifikatsbasierter und Zugriffstoken-Authentifizierung.
- Spark SQL-Abfrageunterstützung: Direkte Ausführung von Spark SQL-Anweisungen.
-
Umfassende Unterstützung für Datentypen: Unterstützung für alle Spark SQL-Datentypen, einschließlich komplexer Typen (
ARRAY,MAP, undSTRUCT). - Wiederverwendung von Sitzungen: Integriertes Sitzungsmanagement für bessere Leistung.
- Modus für hohe Parallelität: Aktivieren Sie gemeinsame, vorgewärmte serverseitige Livy-Sitzungen, um die Latenz beim Verbindungsaufbau und die unnötige Vermehrung von Spark-Clustern zu reduzieren.
- Unterstützung für große Tabellen: Optimierte Behandlung für große Ergebnissätze mit konfigurierbaren Seitengrößen.
- Async prefetch: Laden von Daten im Hintergrund zur Verbesserung der Leistung.
- Proxy-Unterstützung: HTTP-Proxy-Konfiguration für Unternehmensumgebungen.
- Unterstützung für Lakehouses mit mehreren Schemas: Stellen Sie eine Verbindung mit einem bestimmten Schema innerhalb eines Lakehouses her.
Hinweis
In Open-Source Apache Spark werden Datenbank und Schema synonym verwendet. Zum Beispiel liefert die Ausführung von SHOW SCHEMAS oder SHOW DATABASES in einem Fabric-Notebook dasselbe Ergebnis: eine Liste aller Schemata im Lakehouse.
Voraussetzungen
Bevor Sie den Microsoft ODBC Driver für Microsoft Fabric Data Engineering unter Linux verwenden, stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllen:
- Betriebssystem: Ubuntu 22.04 oder neuer, Debian 11 oder neuer, oder Red Hat Enterprise Linux (RHEL) 8 oder später auf x86-64.
-
unixODBC: Der ODBC-Treibermanager für Linux. Installieren Sie die Pakete
unixodbcundunixodbc-dev. -
libcurl: Die HTTP-Laufzeitabhängigkeit, wie zum Beispiel
libcurl4oder das entsprechende Paket für Ihre Distribution. -
OpenSSL: Die Laufzeitabhängigkeit für TLS und Kryptografie, wie
opensslundlibssl3oder entsprechende Pakete. - Fabric Access: Zugang zu einem Fabric-Arbeitsbereich.
- Microsoft Entra ID-Zugangsdaten: Geeignete Zugangsdaten für die Authentifizierung.
- Arbeitsplatz- und Seehaus-IDs: Die GUID-Kennungen für Ihren Fabric-Arbeitsplatz und Ihr Seehaus.
- Azure CLI (optional): Erforderlich, wenn Sie Azure CLI-Authentifizierung verwenden.
Herunterladen und installieren auf Linux
Den Treiber installieren:
Extrahieren Sie
ms-sparksql-odbc-linux-2.0.0.tar.Öffnen Sie ein Terminal im extrahierten Verzeichnis.
Installieren Sie das Debian-Paket:
sudo dpkg -i microsoft-fabric-odbc-driver-2.0.0-Linux.deb
Das Paket installiert die folgenden Dateien:
| Datei | Installationsort |
|---|---|
| Fahrerbibliothek | /usr/lib/libmicrosoftfabricodbc.so |
| Vorlage für Fahrerregistrierung | /usr/share/microsoft-fabric-odbc-driver/odbcinst.ini.template |
| DSN-Konfigurationsvorlage | /usr/share/microsoft-fabric-odbc-driver/odbc.ini.template |
| License | /usr/share/doc/microsoft-fabric-odbc-driver/LICENSE |
| Nutzungsleitfaden | /usr/share/doc/microsoft-fabric-odbc-driver/USAGE_Linux.md |
Installieren Sie ein RPM-Paket
Auf RHEL, Fedora oder CentOS installieren Sie das RPM-Paket aus dem extrahierten Treiberarchiv:
sudo dnf install ./microsoft-fabric-odbc-driver-*.x86_64.rpm
Alternativ verwenden Sie rpm:
sudo rpm -i microsoft-fabric-odbc-driver-*.x86_64.rpm
Überprüfen Sie, ob das RPM den Treiber registriert hat:
odbcinst -q -d | grep "Microsoft"
Um das RPM-Paket zu deinstallieren, führen Sie aus:
sudo dnf remove microsoft-fabric-odbc-driver
Einen Tarball installieren
Für Distributionen ohne Debian- oder RPM-Paketunterstützung oder für einen benutzerdefinierten Installationsstandort entpacken Sie das .tar.gz Paket und führen das Installationsskript aus:
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
Das Installationsskript unterstützt folgende Optionen:
| Auswahl | Description |
|---|---|
--prefix=<path> |
Installieren Sie in ein benutzerdefiniertes Verzeichnis. Der Standardwert lautet /opt/microsoft/fabricodbc. |
--no-register |
Überspringe die unixODBC-Fahrerregistrierung. |
--dry-run |
Zeige die geplanten Änderungen, ohne Dateien zu installieren. |
--uninstall |
Entferne die installierten Dateien und deregistriere den Treiber. |
--help |
Kommandohilfe anzeigen. |
Um die Standardinstallation per Tarball zu überprüfen, führen Sie Folgendes aus:
odbcinst -q -d
ls -la /opt/microsoft/fabricodbc/lib/libmicrosoftfabricodbc.so
Um es zu deinstallieren, führen Sie sudo ./install.sh --uninstall im Verzeichnis des extrahierten Pakets aus.
Treiber manuell registrieren
Das Paket registriert den Treiber automatisch bei unixODBC. Um den Treiber manuell zu registrieren, führen Sie aus:
sudo odbcinst -i -d -f /usr/share/microsoft-fabric-odbc-driver/odbcinst.ini.template
Überprüfen der Installation
Überprüfen Sie, ob der Treiber registriert ist und die Bibliothek installiert ist:
odbcinst -q -d
ls -la /usr/lib/libmicrosoftfabricodbc.so
Der Befehl odbcinst sollte [Microsoft ODBC Driver for Microsoft Fabric Data Engineering] auflisten.
Deinstalliere den Treiber
Um den Treiber zu deinstallieren, führen Sie folgenden Befehl aus:
sudo dpkg -r microsoft-fabric-odbc-driver
Dieser Befehl entfernt die Treiberdateien und deregistriert den Treiber aus unixODBC.
Schnellstartbeispiel
Die folgenden Beispiele verbinden sich mit Fabric und führen eine Spark-SQL-Abfrage aus. Erfülle die Voraussetzungen und installiere den Treiber, bevor du ein Beispiel ausführst.
Python-Beispiel
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++ Beispiel
#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;
}
Baue und führe das Beispiel aus:
g++ -o fabric_test fabric_test.cpp -lodbc -std=c++17
./fabric_test
.NET-Beispiel
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));
}
Format der Verbindungszeichenfolge
Grundlegende Verbindungszeichenfolge
Verwenden Sie das folgende Verbindungszeichenfolge-Format:
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};<parameter1>=<value1>;<parameter2>=<value2>;...
Komponenten der Verbindungszeichenfolge
| Component | Description | Beispiel |
|---|---|---|
DRIVER |
ODBC-Treiberbezeichner | {Microsoft ODBC Driver for Microsoft Fabric Data Engineering} |
WorkspaceId |
Fabric-Arbeitsbereichskennung (GUID) | 4bbf89a8-66bb-443f-91af-df31e6a7560b |
LakehouseId |
Fabric Lakehouse-Kennung (GUID) | d8faa650-1343-496b-b9cc-d4168a676f90 |
AuthFlow |
Authentifizierungsmethode |
AZURE_CLI, CLIENT_CREDENTIAL, CLIENT_CERTIFICATE oder ACCESS_TOKEN |
Exemplarische Verbindungszeichenfolgen
Grundverbindung
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI
Verbindung mit Leistungsoptionen
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;ReuseSession=true;LargeTableSupport=true;PageSizeBytes=18874368
Verbindung zum Holzeinschlag
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
Verbindung mit Hochkonkurrenzmodus
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;LivyMode=HighConcurrency;SessionTag=bi-dashboard
Eine vollständige Anleitung zur Konfiguration finden Sie unter Modus für hohe Parallelität (HC).
Authentication
Der Microsoft ODBC Driver for Microsoft Fabric Data Engineering unterstützt mehrere Authentifizierungsmethoden über Microsoft Entra ID. Konfigurieren Sie die Authentifizierung durch Verwendung des Parameters AuthFlow im Verbindungszeichenfolge oder DSN.
Authentifizierungsmethoden
AuthFlow Wert |
Description |
|---|---|
AZURE_CLI |
Entwicklung mit Azure CLI-Anmeldeinformationen |
CLIENT_CREDENTIAL |
Service Principal mit einem Kundengeheimnis |
CLIENT_CERTIFICATE |
Dienstleiter mit Zertifikat |
ACCESS_TOKEN |
Vorab erworbenes Bearerzugriffstoken |
FILE_TOKEN |
Liest ein Authentifizierungstoken aus einer Datei |
Hinweis
Interaktive Browser-Authentifizierung ist auf headless-Linux-Servern nicht verfügbar. Verwenden Sie stattdessen Azure CLI, Client-Anmeldedaten, zertifikatsbasierte oder Zugriffstoken-Authentifizierung.
Azure CLI-Authentifizierung
Verwenden Sie Azure CLI-Authentifizierung für Entwicklungs- und interaktive Anwendungen.
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)
Bevor Sie sich verbinden, überprüfen Sie, ob die Azure CLI installiert ist, und melden Sie sich an:
az --version
az login
Um Azure CLI auf Debian oder Ubuntu zu installieren, verwenden Sie den Paketmanager:
sudo apt-get update
sudo apt-get install -y azure-cli
Authentifizierung der Client-Zugangsdaten
Verwenden Sie die Authentifizierung der Client-Zugangsdaten für automatisierte Dienste und Hintergrundjobs.
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};"
)
Geben Sie die folgenden Parameter an:
-
TenantId: Die Microsoft Entra-Tenant-ID. -
ClientId: Die Client-ID der Anwendung. -
ClientSecret: Das Client-Geheimnis.
Speichere Geheimnisse in einem sicheren Geheimspeicher oder in Umgebungsvariablen. Speichere keine Geheimnisse in Klartext-Verbindungsstrings oder INI-Dateien.
Zertifikatbasierte Authentifizierung
Verwenden Sie zertifikatsbasierte Authentifizierung für Unternehmensanwendungen, die Zertifikatsdaten benötigen.
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>;"
)
Geben Sie die folgenden Parameter an:
-
TenantId: Die Microsoft Entra-Tenant-ID. -
ClientId: Die Client-ID der Anwendung. -
CertificatePath: Der Pfad zur PFX- oder PKCS12-Zertifikatsdatei. -
CertificatePassword: Das Zertifikatspasswort.
Zugriffstokenauthentifizierung
Verwenden Sie die Zugriffstoken-Authentifizierung, wenn Ihre Anwendung ein Token über einen anderen Mechanismus erhält.
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};"
)
Dateitoken-Authentifizierung
Verwenden Sie Dateitoken-Authentifizierung in containerisierten Umgebungen und automatisierten Pipelines, bei denen ein anderer Prozess ein Trägertoken in die bekannte Token-Datei des Treibers schreibt:
connection_string = (
"DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
"WorkspaceId=<workspace-id>;"
"LakehouseId=<lakehouse-id>;"
"AuthFlow=FILE_TOKEN;"
)
Unterstützte treiberübergreifende Eigenschaftsaliase finden Sie unter Treiberübergreifende Eigenschaftsaliase.
Konfigurationsparameter
Erforderliche Parameter
Fügen Sie diese Parameter in jede Verbindungszeichenfolge ein:
| Parameter | Typ | Description | Beispiel |
|---|---|---|---|
WorkspaceId |
UUID | Fabric-Arbeitsbereichsbezeichner | 4bbf89a8-... |
LakehouseId |
UUID | Fabric Lakehouse-Kennkennung | d8faa650-... |
AuthFlow |
Zeichenfolge | Authentifizierungsflusstyp | AZURE_CLI |
Optionale Parameter
Verbindungseinstellungen
| Parameter | Typ | Standard | Description |
|---|---|---|---|
Database |
Zeichenfolge | Keine | Erste Datenbank für den klassischen Modus. Im HC-Modus wird es nicht automatisch angewendet; starte USE <database> nach der Verbindung oder benutze vollständig qualifizierte Tabellennamen. |
Scope |
Zeichenfolge | https://api.fabric.microsoft.com/.default |
OAuth-Bereich |
Leistungseinstellungen
| Parameter | Typ | Standard | Description |
|---|---|---|---|
ReuseSession |
Boolean | true |
Wiederverwenden Sie eine bestehende Spark-Sitzung |
LargeTableSupport |
Boolean | false |
Aktivieren von Optimierungen für große Ergebnismengen |
EnableAsyncPrefetch |
Boolean | false |
Aktivieren des Vorabrufens von Hintergrunddaten |
PageSizeBytes |
Integer |
18874368 (18 MB) |
Seitengröße für Ergebnis-Paginierung von 1 bis 18 MB |
Einstellungen für die Protokollierung
| Parameter | Typ | Standard | Description |
|---|---|---|---|
LogLevel |
Zeichenfolge | INFO |
Log-Level: DEBUG, INFO, WARN oder ERROR. Verwenden Sie DEBUG für detaillierte Treiberdiagnosen. |
LogFile |
Zeichenfolge | odbc_driver.log |
Absoluter oder relativer Logdateipfad |
Proxyeinstellungen
| Parameter | Typ | Standard | Description |
|---|---|---|---|
UseProxy |
Boolean | false |
Aktiviere einen Proxy |
ProxyHost |
Zeichenfolge | Keine | Proxy-Hostname |
ProxyPort |
Integer | Keine | Proxyport |
ProxyUsername |
Zeichenfolge | Keine | Benutzername der Proxy-Authentifizierung |
ProxyPassword |
Zeichenfolge | Keine | Proxyauthentifizierungskennwort |
Einstellungen für hohe Parallelität (HC)
Verwenden Sie diese Parameter, um den High-Concurrency (HC)-Modus zu aktivieren und zu konfigurieren. Der HC-Modus ist opt-in. Wenn Sie LivyMode oder UseHighConcurrency nicht festlegen, verwendet der Treiber den klassischen Pfad für eine einzelne Sitzung. Für Hinweise und Beispiele siehe High-Concurrency (HC)-Modus.
| Parameter | Typ | Standard | Description |
|---|---|---|---|
LivyMode |
Zeichenfolge | Nicht festgelegt | Steuert die Sitzungserfassung. Unterstützte Werte sind Classic, HighConcurrencyund Auto.
Auto Verwendet derzeit den klassischen Pfad. |
UseHighConcurrency |
Boolean | false |
Aktiviert den HC-Modus als Alternative zur Einstellung LivyMode=HighConcurrency. |
SessionTag |
Zeichenfolge | Keine | Gibt einen serverseitigen Packhinweis an. Verbindungen müssen eine entsprechende serverseitige Konfiguration verwenden, um eine warme Livy-Sitzung zu teilen. |
IdempotencyKey |
Zeichenfolge | Keine | Stellt einen vom Client generierten Schlüssel für sichere erneute HC-Abrufversuche bereit. Der Treiber validiert den Zeichensatz und protokolliert den Wert nie. |
EnvironmentId |
Zeichenfolge | Keine | Spezifiziert die Fabric-Umgebungskennung, die als spark.fabric.environmentDetails in der HC-Erfassungskonfiguration gesendet wird. |
HeartbeatTimeoutInSecond |
Integer | Serverstandard | Legt das serverseitige Leerlauf-Timeout der HC-Sitzung in Sekunden fest. Der Wert muss eine positive ganze Zahl sein. |
AcquireTimeoutSeconds |
Integer | 300 |
Legt fest, wie lange der Treiber in Sekunden wartet, bis eine HC-Sitzung den Zustand Idle erreicht. Der Wert muss eine positive ganze Zahl sein. |
conf.<key> |
Zeichenfolge | Keine | Spezifiziert eine Spark-Konfigurationsüberschreibung, die in der HC-Erwerbsanfrage gesendet wird. Beispiel: conf.spark.sql.shuffle.partitions=200 |
Priorität und Validierung von Modi
-
LivyModehat Vorrang vorUseHighConcurrency, wenn Sie beide Parameter festlegen. - Parameterwerte sind nicht groß- und grossschreibungssensitiv.
-
UseHighConcurrencyakzeptierttrue,yes,onoder1, um den HC-Modus zu aktivieren. Es akzeptiertfalse,0,nooderoff, um den HC-Modus zu deaktivieren. - Für andere nichtleere Werte liefert ein
SQLDriverConnectFehler zurück. DSN-only protokolliert den ValidierungsfehlerSQLConnectund verwendet den klassischen Pfad.
Kompatibilitätseinstellungen
Der Treiber akzeptiert TenantPrincipal und PoolMax, einschließlich ihrer umgebungsvariablen Fallbacks, um mit früheren HC-Konfigurationen kompatibel zu sein. Der Treiber parselt und validiert diese Werte, aber sie beeinflussen nicht das HC-Session-Matching oder die Laufzeit-Poolkapazität. Verlassen Sie sich nicht auf sie für Mieterisolation oder Verbindungsgrenzen.
Rückfälle für Umweltvariablen
Der Treiber verwendet die folgenden Umweltvariablen nur, wenn der entsprechende DSN- oder Verbindungsstring-Parameter nicht gesetzt ist:
| Umgebungsvariable | Zuordnung zu |
|---|---|
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 (nur Kompatibilität) |
FABRIC_ODBC_HC_HEARTBEAT_SECONDS |
HeartbeatTimeoutInSecond |
FABRIC_ODBC_HC_ACQUIRE_TIMEOUT |
AcquireTimeoutSeconds |
FABRIC_ODBC_HC_POOL_MAX |
PoolMax (nur Kompatibilität) |
Für FABRIC_ODBC_USE_HC erkennt die ausschließlich umgebungsbasierte Aktivierung true, 1 oder yes (ohne Beachtung der Groß-/Kleinschreibung). Andere Werte deaktivieren den HC-Modus. Die Aliase off und on gelten nur für DSN- und Verbindungszeichenfolgenwerte.
Hoch-Nebenläufigkeit (HC) Modus
Der Modus für hohe Parallelität (HC) ermöglicht es ODBC-Verbindungen mit demselben Arbeitsbereich und demselben Lakehouse, eine Verbindung mit gemeinsam genutzten, bereits aufgewärmten serverseitigen Livy Spark-Sitzungen herzustellen, statt für jede Verbindung einen separaten Cluster bereitzustellen. Nutze es für Arbeitslasten wie BI-Dashboards, Notebook-Kernel und ETL-Fan-outs, die viele kurzlebige Verbindungen öffnen und serververwaltete Spark-Kapazitäten teilen können.
Der HC-Modus ist opt-in. Wenn du keine HC-Einstellung konfigurierst, verwendet der Treiber den klassischen Einzelsitzungspfad.
Auswählen eines Verbindungsmodus
Benutze den HC-Modus wenn:
- Ihre Arbeitslast öffnet viele kurzlebige ODBC-Verbindungen, wie BI-Dashboards, Notebook-Kernel oder ETL-Fan-Out.
- Verbindungen zielen auf denselben Arbeitsbereich und dasselbe Lakehouse ab und können eine serververwaltete Spark-Sitzung teilen.
- Die Reduzierung der Kaltstart-Latenz pro Verbindung ist wichtig.
Nutze den klassischen Modus, wenn:
- Jede Verbindung erfordert eine isolierte Spark-Sitzung aufgrund unterschiedlicher Spark-Konfigurationen oder strikter Ressourcenisolation.
- Der Fabric Livy-Endpunkt für den Zielarbeitsbereich und das Lakehouse unterstützt den HC-Modus nicht.
Aktivieren Sie den Modus für hohe Parallelität
Fügen Sie der DSN oder der Verbindungszeichenfolge einen Parameter für den Modus mit hoher Parallelität hinzu.
Empfohlen: Festlegen LivyMode
Verwenden Sie LivyMode, um den Sitzungserfassungsmodus explizit auszuwählen:
LivyMode=HighConcurrency
Unterstützte Werte sind Classic, HighConcurrencyund Auto. Werte sind nicht groß-/kleinsensitiv.
Auto Derzeit wählt er den Classic-Modus.
Alternative: Satz UseHighConcurrency
Verwenden Sie die boolesche Einstellung zur Kompatibilität mit bestehenden Konfigurationen:
UseHighConcurrency=true
Zum Aktivieren des Modus für hohe Parallelität verwenden Sie true, 1, yes oder on. Um es zu deaktivieren, verwenden Sie false, 0, no oder off. Werte sind nicht groß-/kleinsensitiv.
SQLDriverConnect verweigert andere nichtleere Werte mit SQLSTATE HY024. DSN-only protokolliert den Validierungsfehler SQLConnect und verwendet den klassischen Modus.
Hinweis
Wenn du beide Parameter setzt, LivyMode hat Vorrang vor UseHighConcurrency.
Du kannst auch den High-Concurrency-Modus für die aktuelle Shell aktivieren, indem du die Umgebungsvariablen verwendest:
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
Erforderliche Parameter im HC-Modus
Die HC-Aktivierung erfordert folgende gültige Kennungen:
| Parameter | Hinweise |
|---|---|
WorkspaceId |
Muss eine gültige GUID eines Fabric-Workspaces sein. |
LakehouseId |
Muss ein gültiger Fabric Lakehouse GUID sein. |
Beziehen Sie SessionTag ein, weil es die serverseitige Zuordnung für Warm-Sessions beeinflusst.
Sitzungsabgleich
Der HC-Modus garantiert nicht, dass jede Verbindung eine bestehende Sitzung wiederverwendet. Für jede Anfrage zur Sitzungserfassung sendet der Treiber:
- Der
SessionTag-Wert. - Die effektive Spark-Konfiguration, einschließlich
conf.*Einstellungen undEnvironmentId.
Der Fabric Livy Service bewertet diese Werte und entscheidet, ob die Verbindung mit einer warmen Sitzung verbunden oder eine neue Sitzung erstellt wird. Um die Wiederverwendung der Sitzungen zu verbessern, verwenden Sie konsistente Werte über Verbindungen hinweg, die für die gemeinsame Server-verwaltete Spark-Kapazität gedacht sind.
Exemplarische Verbindungszeichenfolgen
Minimale HC-Verbindung mit Azure CLI-Authentifizierung:
DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;LivyMode=HighConcurrency;SessionTag=bi-dashboard
HC-Verbindung mit abgestimmten Auszeiten:
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-Verbindung mit einer Umgebung und Spark-Konfigurationsüberschreibungen:
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 mit 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"
)
Konfigurieren Sie den HC-Modus in einem Linux-DSN
Anstatt die HC-Einstellungen in jeder Verbindungszeichenfolge zu wiederholen, speichern Sie sie in ~/.odbc.ini für ein benutzerspezifisches DSN oder in /etc/odbc.ini für ein systemweites 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
Nachdem du die DSN gespeichert hast, verifiziere sie und teste die Verbindung.
odbcinst -q -s
isql -k -v "DSN=FabricHCDSN;"
Wenn ein Verbindungszeichenfolge keinen Wert angibt, liest der Treiber folgende Einstellungen aus dem DSN:
LivyModeUseHighConcurrencyEnvironmentIdSessionTagIdempotencyKeyHeartbeatTimeoutInSecondAcquireTimeoutSeconds
Der Treiber liest außerdem die nur für die Kompatibilität vorgesehenen Einstellungen TenantPrincipal und PoolMax. Verwenden Sie die Parameternamen in der HC-Einstellungstabelle.
Important
Der Treiber liest keine conf.* Spark-Konfigurationsüberschreibungen aus der DSN. Fügen Sie sie zur Laufzeit der Verbindungszeichenfolge hinzu oder fügen Sie sie ein, bevor Sie SQLDriverConnect aufrufen.
HC-Modus deaktivieren
Du kannst neue HC-Session-Erwerbungen deaktivieren, ohne den Treiber neu zu deployen. Verwenden Sie die Methode, die mit der Aktivierung des HC-Modus übereinstimmt:
| HC-Konfigurationsquelle | Wie man den HC-Modus deaktiviert |
|---|---|
| Nur Umgebungsvariable | Setze FABRIC_ODBC_USE_HC=false, oder entferne die Variable. |
| DSN | Legen Sie LivyMode=Classic fest. Alternativ LivyMode entfernen und UseHighConcurrency=false festlegen. |
| Verbindungszeichenfolge | Setze LivyMode=Classic, oder entferne die HC-Parameter. |
Einstellungen für Verbindungszeichenfolgen und DSNs haben Vorrang vor dem Fallback auf Umgebungsvariablen. Diese Änderungen betreffen nur neue Verbindungen. Bestehende HC-Sessions laufen weiter, bis sie veröffentlicht werden.
Verstehen Sie das Laufzeitverhalten von HC
-
Validierung:
SQLDriverConnectlehnt ungültige HC-Boolesche und positiv-ganzzahlige Werte mit SQLSTATEHY024ab. Es lehnt eine ungültigeLivyModesowie ungültige oder zu großeWorkspaceId-,LakehouseId- undIdempotencyKey-Werte mit dem SQLSTATEHY000ab. Ein zu großer KompatibilitätswertTenantPrincipalgibt ebenfallsHY000zurück. Für nurSQLConnectDSN protokolliert der Treiber gewöhnliche HC-Validierungsfehler und verwendet den klassischen Modus. Zu große sicherheitssensible Werte führen weiterhin zum Fehlschlagen der Verbindung. -
Sensible Daten: Der Treiber schließt andere sensible Felder aus HC-Logs und Diagnoseausgaben aus oder löscht
IdempotencyKeysie aus. - Stornierung: Die Kündigung des Kontoauszugs erfolgt kooperativ. Die bereits laufende Serverarbeit endet sauber, anstatt sofort beendet zu werden.
- Leistungsschalter: HC- und klassische Modi verwenden separate Leistungsschalter. Das Ausschöpfen eines Modus wirkt sich nicht auf den anderen aus.
-
Anfangsdatenbank: HC-Verbindungen führen die Anfangsanweisung
USEfür den ParameterDatabasenicht aus. FühreUSE <database>nach der Verbindung aus oder benutze vollständig qualifizierte Tabellennamen. -
Diagnose: Legen Sie
LogLevel=DEBUGfest, um die Erfassung von HC, Abfragen, Freigaben und Entscheidungen zur Fehlerzuordnung zu protokollieren. Zur gezielten Fehlerbehebung legen SieLIVY_HC_VERBOSE=1so fest, dass zusätzliche bereinigte HC-HTTP-Diagnosedaten einbezogen werden.
DSN-Konfiguration
Unter Linux konfigurieren Sie Datenquellennamen (DSNs) in INI-Dateien statt in der Windows-Registry.
| Datei | Geltungsbereich | Zugriff |
|---|---|---|
/etc/odbc.ini |
Systemweite DSNs | Erfordert sudo |
~/.odbc.ini |
Benutzerspezifische DSNs | Nur aktueller Benutzer |
Erstellen eines DSN
Falls ~/.odbc.ini vorhanden, füge den neuen DSN-Abschnitt hinzu, ohne die bestehende Datei zu ersetzen. Kopiere die installierte Vorlage nur, wenn du die Datei erstellst:
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
Bearbeiten Sie ~/.odbc.ini mit den Details Ihres Fabric-Arbeitsbereichs:
[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
Verifiziere die DSN
Liste die konfigurierten DSNs auf und teste dann die Verbindung:
odbcinst -q -s
isql -k -v "DSN=FabricDSN;"
Der Befehl isql benötigt die unixODBC-Kommandozeilen-Tools. Die -k Option verwendet SQLDriverConnect, wodurch der Treiber DSN-Verbindungsattribute verarbeiten kann.
Verwendung eines DSN in Anwendungen
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);
Verwendungsbeispiele
Teste eine Verbindung mit isql
Starte eine interaktive SQL-Sitzung:
isql -k -v "DSN=FabricDSN;"
Führe eine einzelne Abfrage aus:
echo "SELECT 1 AS test" | isql -k -v "DSN=FabricDSN;" -b
Verwenden Sie -k für Fabric DSNs, damit isql über SQLDriverConnect statt über SQLConnect verbindet.
Mit großen Ergebnismengen arbeiten
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()
Schemata und Tabellen entdecken
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()
Datentypzuordnung
Der Treiber ordnet Spark SQL-Datentypen ODBC-SQL-Typen zu:
| Spark SQL-Typ | ODBC SQL-Typ | C/C++-Typ | Python-Typ | .NET-Typ |
|---|---|---|---|---|
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-Zeichenfolge | string |
MAP |
SQL_VARCHAR |
SQLCHAR* |
JSON-Zeichenfolge | string |
STRUCT |
SQL_VARCHAR |
SQLCHAR* |
JSON-Zeichenfolge | string |
Plattformunterschiede
| Funktion | Windows | Linux |
|---|---|---|
| Fahrermanager | Microsoft ODBC Driver Manager | unixODBC |
| Treiber-Binärform | microsoftfabricodbc.dll |
libmicrosoftfabricodbc.so |
| DSN-Konfiguration | Windows-Registry und GUI |
/etc/odbc.ini und ~/.odbc.ini |
| Fahrerzulassung | Registrierung und odbcad32.exe |
odbcinst -i -d -f |
| HTTP-Client | WinHTTP | libcurl |
| TLS | In Windows integrierte Unterstützung | Openssl |
| Zertifikatauthentifizierung | Windows CryptoAPI | OpenSSL mit RS256- und PEM- oder PFX-Dateien |
| Interaktive Authentifizierung | Browserfenster | Nicht verfügbar auf headless-Servern |
| Verpackung | MSI-Installationsprogramm |
.deb, .rpm, oder .tar.gz Paket |
Troubleshooting
Fahrer nicht gefunden
Problem: Die Verbindung schlägt mit [IM002] Data source name not found and no default driver specifiedfehl.
Lösungen:
- Überprüfen Sie die Treiberregistrierung, indem Sie
odbcinst -q -dausführen. - Vergewissern Sie sich, dass
/usr/lib/libmicrosoftfabricodbc.sovorhanden ist. - Registrieren Sie den Fahrer, indem Sie .
sudo odbcinst -i -d -f /usr/share/microsoft-fabric-odbc-driver/odbcinst.ini.templateausführen. - Installieren Sie das Paket erneut, indem Sie
sudo dpkg -i microsoft-fabric-odbc-driver-2.0.0-Linux.deb. ausführen.
Fahrer nach Tarball-Installation nicht gefunden
Problem: Der Treiber ist registriert, aber die gemeinsame Bibliothek ist nicht auf dem registrierten Pfad vorhanden.
Lösungen:
- Vergewissern Sie sich, dass
/opt/microsoft/fabricodbc/lib/libmicrosoftfabricodbc.sovorhanden ist. - Erneutes Ausführen
sudo ./install.sh --prefix=/opt/microsoft/fabricodbc. - Wenn du ein benutzerdefiniertes Präfix verwendet hast, überprüfe, dass der Pfad des registrierten Treibers dasselbe Präfix verwendet.
DSN nicht gefunden
Problem: Die Verbindung schlägt mit [IM002] Data source name not foundfehl.
Lösungen:
- Überprüfen Sie die DSN-Konfiguration, indem Sie
odbcinst -q -s. ausführen. - Überprüfen Sie, ob
~/.odbc.inioder/etc/odbc.iniden DSN-Abschnitt enthält. - Stellen Sie sicher, dass der
DriverWert genau mit dem Namen des registrierten Fahrers übereinstimmt.
Verbindungsfehler
Problem: Der Fahrer kann sich nicht mit Fabric verbinden.
Lösungen:
- Überprüfen Sie, ob die Arbeitsplatz-ID und die Lakehouse-ID gültige GUIDs sind.
- Überprüfen Sie die Azure CLI-Authentifizierung, indem Sie
az account show. ausführen - Stelle sicher, dass du die erforderlichen Fabric-Arbeitsbereichsberechtigungen hast.
- Überprüfe die Netzwerkverbindung und die Proxy-Einstellungen.
Authentifizierungsfehler
Problem: Die Azure CLI-Authentifizierung schlägt fehl.
Lösungen:
- Laufen Sie
az login, um Ihre Zugangsdaten zu aktualisieren. - Lege das richtige Abonnement fest, indem du
az account set --subscription <subscription-id>ausführst. - Überprüfen Sie das Token, indem Sie
az account get-access-token --resource https://api.fabric.microsoft.comausführen. - Stellen Sie sicher, dass Ihr Konto die erforderlichen Fabric-Arbeitsbereichsberechtigungen hat.
Fehler in der gemeinsamen Bibliothek
Problem: Der Fahrer meldet error while loading shared libraries: libmicrosoftfabricodbc.so.
Lösungen:
- Installieren Sie das Paket erneut, indem Sie
sudo dpkg -i microsoft-fabric-odbc-driver-2.0.0-Linux.deb. ausführen. - Vergewissern Sie sich, dass
/usr/lib/libmicrosoftfabricodbc.sovorhanden ist. - Führe aus,
sudo ldconfigum den Cache der gemeinsamen Bibliothek zu aktualisieren.
Zeitüberschreitungen bei Abfragen
Problem: Bei Abfragen großer Tabellen tritt eine Zeitüberschreitung auf.
Lösungen:
- Fügen Sie
LargeTableSupport=trueder Verbindungszeichenfolge hinzu. - Passen Sie
PageSizeBytesfür die Ergebnisgröße an. - Fügen Sie
EnableAsyncPrefetch=1der Verbindungszeichenfolge hinzu. - Verwenden Sie eine
LIMITKlausel, um die Größe des Ergebnisses zu begrenzen.
Protokollierung aktivieren
Aktivieren Sie eine detaillierte Protokollierung in einem DSN:
[FabricDSN]
LogLevel = DEBUG
LogFile = /tmp/fabric_odbc_debug.log
Alternativ können Sie der Verbindungszeichenfolge Protokollierungsparameter hinzufügen:
LogLevel=DEBUG;LogFile=/tmp/fabric_odbc_debug.log;
Der Treiber unterstützt folgende Protokollierungsstufen:
-
DEBUG: Enthält detaillierte Debuginformationen und ist die ausführlichste Protokollierungsstufe des Treibers. -
INFO: Enthält allgemeine Informationen und ist der Standard. -
WARN: Enthält nur Warnungen. -
ERROR: Enthält nur Fehler.
Aktivieren Sie unixODBC-Tracing
Für die Diagnose auf niedriger ODBC-Aufrufebene fügen Sie /etc/odbcinst.ini die folgende Konfiguration hinzu:
[ODBC]
Trace = yes
TraceFile = /tmp/odbc_trace.log
Schalten Sie das Nachverfolgen aus, wenn Sie die Fehlersuche beendet haben, um unnötigen Leistungsaufwand zu vermeiden.