Microsoft ODBC-ajuri Microsoft Fabric Data Engineeringille

ODBC (Open Database Connectivity) on laajasti hyväksytty standardi, joka mahdollistaa asiakassovellusten yhteyden tietokantojen ja big data -alustojen datan käsittelyn ja sen kanssa.

Microsoft ODBC Driver for Fabric Data Engineering mahdollistaa Spark-työkuormien yhdistämisen, kyselyn ja hallinnan Fabric-järjestelmässä ODBC-standardin luotettavuudella ja yksinkertaisuudella. Fabric:n Livy-rajapintojen pohjalta rakennettu ajuri tarjoaa turvallisen ja joustavan Spark SQL -yhteyden C/C++-, .NET-, Python- ja muihin ODBC-yhteensopiviin sovelluksiin sekä BI-työkaluihin.

Tärkeimmät ominaisuudet

  • ODBC 3.x -yhteensopivuus: ODBC 3.x -määrityksen täysi toteutus
  • Microsoft Entra ID autentikointi: Useita todennusvirtoja, mukaan lukien Azure CLI, interaktiivinen, asiakastunnukset, varmennepohjainen ja pääsytunnustunnistus
  • Spark SQL query support: Spark SQL -lauseiden suora suoritus
  • Kattava tietotyyppituki: Tuki kaikille Spark SQL -tietotyypeille, mukaan lukien monimutkaiset tyypit (ARRAY, MAP, STRUCT)
  • Istunnon uudelleenkäyttö: Sisäänrakennettu istunnonhallinta suorituskyvyn parantamiseksi
  • Korkean samanaikaisuuden tila: Valita jaettuja, lämpimiä palvelinpuolen Livy-istuntoja yhteyden käynnistysviiveen ja Spark-klusterin leviämisen vähentämiseksi
  • Suuren taulukon tuki: Optimoitu käsittely suurille tulosjoukoille, joissa sivukoot on konfiguroitavissa
  • Asynkroninen esilataus: Taustalla lataava datan lataus suorituskyvyn parantamiseksi
  • Välityspalvelintuki: HTTP-välityspalvelimen konfiguraatio yritysympäristöihin
  • Moniskeemainen järvitalotuki: Yhdistä tiettyyn skeemaan järvenrakennuksen sisällä
  • OneLake-integraatio: Pääsy OneLakeen tallennettuun lakehouse-dataan, mukaan lukien taulukot useilla skeemoilla, yhtenäisen ODBC-rajapinnan kautta ilman erillistä tallennuskonfiguraatiota
  • Environment items support: Liitä Fabric ympäristöelementtejä työn suorituksen aikana soveltaaksesi työtilakirjastoja, Spark-ominaisuuksia ja muuttujia jokaiseen istuntoon
  • Custom Spark configuration: Välitä Spark-konfiguraatioominaisuudet suoraan yhteysmerkkijono:n kautta istuntokäyttäytymisen säätämiseksi

Muistio

Avoimen lähdekoodin Apache Sparkissa tietokantaa ja skeemaa käytetään synonyymeinä. Esimerkiksi Fabric-muistikirjan suorittaminen SHOW SCHEMASSHOW DATABASES palauttaa saman tuloksen — listan kaikista skeemoista järvenrakennuksessa.

edellytykset

Ennen Microsoft ODBC Driverin käyttöä Microsoft Fabric Data Engineeringiin, varmista, että sinulla on:

  • Käyttöjärjestelmä: Windows 10/11 tai Windows Server 2016+
  • Fabric Access: Pääsy Fabric-työtilaan
  • Microsoft Entra ID tunnistetiedot: Sopivat tunnistetiedot todennukseen
  • Työtilan ja järvitalon tunnukset: GUID-tunnisteet Fabric-työtilallesi ja järvitalollesi
  • Azure CLI (valinnainen): Vaaditaan Azure CLI -todennusmenetelmälle

Lataus ja MSI-asennus

  1. Lataa Microsoft ODBC Driver for Microsoft Fabric Data Engineering MSI -paketti
  2. Kaksoisklikkaus MicrosoftFabricODBCDriver-2.0.msi.
  3. Seuraa asennusohjainta ja hyväksy lisenssisopimus
  4. Valitse asennushakemisto (oletus: C:\Program Files\Microsoft ODBC Driver for Microsoft Fabric Data Engineering\)
  5. Viimeistele asennus

Hiljainen asentaminen

# Silent installation
msiexec /i "MicrosoftFabricODBCDriver-2.0.msi" /quiet

# Installation with logging
msiexec /i "MicrosoftFabricODBCDriver-2.0.msi" /l*v install.log

Asennuksen tarkistaminen

Asennuksen jälkeen varmista, että ajuri on rekisteröity:

  1. Suorita odbcad32.exe (ODBC Data Source Administrator)
  2. Siirry Kuljettajat-välilehdelle
  3. Varmista, että "Microsoft ODBC Driver for Microsoft Fabric Data Engineering" on listattu

Nopea aloitusesimerkki

Tämä esimerkki osoittaa, miten yhdistetään Fabric-ohjelmaan ja suoritetaan kysely Microsoft ODBC -ajurilla Microsoft Fabric Data Engineeringille. Ennen tämän koodin suorittamista varmista, että olet suorittanut vaaditut vaatimukset ja asentanut ajurin.

C/C++-esimerkki

#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-esimerkki

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-esimerkki

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));
}

Yhteysmerkkijonomuoto

Perusyhteysjono

Microsoft ODBC Driver for Microsoft Fabric Data Engineering käyttää seuraavaa yhteysmerkkijonomuotoa:

DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};<parameter1>=<value1>;<parameter2>=<value2>;...

Yhteysmerkkijonon komponentit

Osa Kuvaus Esimerkki
KULJETTAJA ODBC-ajurin tunniste {Microsoft ODBC Driver for Microsoft Fabric Data Engineering}
WorkspaceId Fabric-työtilan tunniste (GUID) xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx
LakehouseId Fabric-järvimajan tunniste (GUID) xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx
AuthFlow Todentamismenetelmä AZURE_CLI, INTERACTIVE, , CLIENT_CREDENTIALCLIENT_CERTIFICATE, ACCESS_TOKEN, ,FILE_TOKEN

Esimerkkejä yhteysmerkkijonoista

Perusyhteys (Azure CLI authentication)

DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI

Suorituskykyvaihtoehdoilla

DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;ReuseSession=true;LargeTableSupport=true;PageSizeBytes=18874368

Metsänhakkuun kanssa

DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;LogLevel=DEBUG;LogFile=odbc_driver.log

Korkean samanaikaisuuden tilalla

DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;LivyMode=HighConcurrency;SessionTag=bi-dashboard

Katso High-Concurrency (HC) Mode -osio saadaksesi täydelliset konfigurointiohjeet.

Todennus

Microsoft ODBC Driver for Microsoft Fabric Data Engineering tukee useita todennusmenetelmiä Microsoft Entra ID:n (entinen Azure Active Directory) kautta. Tunnistautuminen konfiguroidaan yhteysmerkkijonon AuthFlow parametrin avulla.

Todennusmenetelmät

AuthFlow-arvo Kuvaus
CLIENT_CREDENTIAL (0) Palvelupäähenkilö asiakassalaisuudella. Alias: CLIENT_SECRET_CREDENTIAL.
BROWSER_BASED (1) Interaktiivinen selainpohjainen tunnistautuminen. Alias: INTERACTIVE.
AZURE_CLI (2) Kehitys Azure CLI -tunnuksilla.
CLIENT_CERTIFICATE_CREDENTIAL (3) Palvelupäämies todistuksella. Alias: CLIENT_CERTIFICATE.
AUTH_ACCESS_TOKEN (4) Valmiiksi hankittu kantajan käyttöoikeustunnus. Alias: ACCESS_TOKEN.
FILE_TOKEN (5) Lukee todennustunnuksen tiedostosta.

Voit määrittää todennusarvot isolla käärme-, pascal-kirjaimella tai numeerisella tavalla. Kuljettaja hyväksyy myös lyhyitä aliakseja, kuten Browser, Interactive, CLI, TokenCertificate, , ja File. Kuljettaja jättää alleviivaukset huomiotta vertaillessaan arvoja.

Azure CLI -todennus

Paras: Kehitykseen ja interaktiivisiin sovelluksiin

# 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)

Edellytykset:

  • Azure CLI asennettu: az --version
  • Kirjautunut sisään: az login

Interaktiivinen selaimen tunnistautuminen

Parhaiten: Käyttäjäkohtaisille sovelluksille

# 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)

Toiminta:

  • Avaa selaimen ikkunan käyttäjän tunnistautumista varten
  • Tunnistetiedot tallennetaan välimuistiin seuraavia yhteyksiä varten

Asiakastunnisteiden (palvelupäähenkilön) todennus

Paras: Automatisoidut palvelut ja taustatyöt

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};"
)

Vaaditut parametrit

  • TenantId: Azure vuokralaisen tunnus
  • ClientId: Application (client) ID Microsoft Entra ID:stä
  • ClientSecret: Asiakassalaisuus Microsoft Entra ID:stä

Parhaat käytännöt

  • Tallenna salaisuudet turvallisesti (Azure Key Vault, ympäristömuuttujat)
  • Käytä hallittuja identiteettejä aina kun mahdollista
  • Kierrätä salaisuuksia säännöllisesti

Varmennepohjainen todentaminen

Paras: Yrityssovelluksiin, jotka vaativat varmennepohjaista todennusta

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>;"
)

Vaaditut parametrit:

  • TenantId: Azure vuokralaisen tunnus
  • ClientId: Sovelluksen (asiakas) tunnus
  • CertificatePath: Polku PFX/PKCS12-varmennetiedostoon
  • CertificatePassword: Varmenteen salasana

Pääsytunnuksen tunnistautuminen

Parhaiten: Mukautetut todennusskenaariot

# 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};"
)

Tiedostotunnuksen tunnistautuminen

Käytä tiedostotoken-tunnistautumista konttiympäristöissä ja automatisoiduissa putkissa, joissa toinen prosessi kirjoittaa kantajatunnisteen kuljettajan tunnettuun token-tiedostoon:

connection_string = (
    "DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
    "WorkspaceId=<workspace-id>;"
    "LakehouseId=<lakehouse-id>;"
    "AuthFlow=FILE_TOKEN;"
)

Ajuri ratkaisee token-tiedoston sijainnin Windows- ja Linux-laitteissa.

Ristiinkuljettajan ominaisuusaliasit

ODBC-ajuri hyväksyy valitut ADO.NET- ja JDBC-ominaisuusnimet natiivien ODBC-nimien lisäksi. Tämä tuki voi vähentää yhteysjonojen muutoksia, kun siirryt Fabric-ajureiden välillä.

ADO.NET- tai JDBC-ominaisuus ODBC-vastine
FabricWorkspaceID WorkspaceId
FabricLakehouseID LakehouseId
LivySessionTimeoutSeconds Yhteyden aikakatkaisu
LivyStatementTimeoutSeconds Lausekkeen aikakatkaisu
ConnectionPoolEnabled Allas päällä

Ajuri ratkaisee 17 ristiin-ajurialiasta yhteyden yhteydessä.

Määritysparametrit

Pakolliset parametrit

Nämä parametrit täytyy olla läsnä jokaisessa yhteysjonossa:

Parametri Tyyppi Kuvaus Esimerkki
WorkspaceId UUID Fabric-työtilan tunnus 4bbf89a8-...
LakehouseId UUID Fabric-järvimajan tunniste d8faa650-...
AuthFlow String Tunnistautumisen virtaustyyppi AZURE_CLI

Valinnaiset parametrit

Yhteysasetukset

Parametri Tyyppi Oletus Kuvaus
Tietokanta String Ei toistuvuutta Alkuperäinen tietokanta klassikkotilalle. HC-tila ei sovellu sitä automaattisesti; suorita USE <database> yhdistämisen jälkeen tai käytä täysin kelvollisia taulunimiä.
Käyttöalue String https://api.fabric.microsoft.com/.default OAuthin laajuus

Esitysasetukset

Parametri Tyyppi Oletus Kuvaus
ReuseSession totuusarvo true Käytä olemassa olevaa Spark-istuntoa uudelleen
LargeTableSupport totuusarvo false Ota optimointi käyttöön suurille tulosjoukoille
EnableAsyncPrefetch totuusarvo false Ota taustatietojen esihakemus käyttöön
PageSizeBytes Kokonaisluku 18874368 (18 MB) Sivun koko tulossivuille (1–18 MB)

Lokiasetukset

Parametri Tyyppi Oletus Kuvaus
LogLevel String INFO Logaritmitaso: DEBUG, INFO, WARN, tai ERROR. Käytä DEBUG yksityiskohtaisiin kuljettajien diagnostiikkaan.
Lokitiedosto String odbc_driver.log Lokitiedoston polku (absoluuttinen tai suhteellinen)

Välityspalvelimen asetukset

Parametri Tyyppi Oletus Kuvaus
UseProxy totuusarvo false Ota välityspalvelin käyttöön
ProxyHost String Ei toistuvuutta Välityspalvelimen isäntänimi
ProxyPort Kokonaisluku Ei toistuvuutta Proxy-portti
ProxyUsername String Ei toistuvuutta Välityspalvelimen todennuskäyttäjätunnus
ProxyPassword String Ei toistuvuutta Välityspalvelimen todennussalasana

Korkean samanaikaisuuden (HC) asetukset

Käytä näitä parametreja ottaaksesi käyttöön ja konfiguroidaksesi korkean samanaikaisuuden (HC) tilan. HC-tila on vapaaehtoinen. Jos et aseta LivyMode tai UseHighConcurrency, ajuri käyttää klassista yhden session polkua. Ohjeita ja esimerkkejä varten katso Korkean samanaikaisuuden (HC) tila.

Parametri Tyyppi Oletus Kuvaus
LivyMode String Ei asetettu Ohjaa istunnon hankintaa. Tuettuja arvoja ovat Classic, HighConcurrencyja Auto. Auto Tällä hetkellä käytetään klassista polkua.
UseHighConcurrency totuusarvo false Ottaa HC-tilan käyttöön vaihtoehtona asettamiselle LivyMode=HighConcurrency.
SessionTag String Ei toistuvuutta Antaa vihjeen palvelinpuolen pakkausta. Yhteyksien on käytettävä vastaavaa palvelinpuolen konfiguraatiota jakaakseen lämpimän Livy-istunnon.
IdempotencyKey String Ei toistuvuutta Tarjoaa asiakkaan luoman avaimen turvallisia HC-hankintayrityksiä varten. Ajuri vahvistaa merkkijoukon eikä koskaan kirjaa arvoa.
EnvironmentId String Ei toistuvuutta Määrittelee Fabric-ympäristön tunnisteen, joka lähetetään HC-hankintakonfiguraatiossaspark.fabric.environmentDetails.
HeartbeatTimeoutInSecond Kokonaisluku Palvelimen oletus Asettaa palvelinpuolen HC-istunnon lepotilan aikakatkaisun sekunneissa. Arvon täytyy olla positiivinen kokonaisluku.
AcquireTimeoutSeconds Kokonaisluku 300 Määrittää, kuinka kauan kuljettaja odottaa HC-istunnon saapumista Idle tilaan, sekunneissa. Arvon täytyy olla positiivinen kokonaisluku.
conf.<key> String Ei toistuvuutta Määrittelee Spark-konfiguraatioiden ohituksen, joka lähetetään HC-hankintapyynnössä. Esimerkki: conf.spark.sql.shuffle.partitions=200.

Moodien etusijaisuus ja validointi

  • LivyMode Se menee etusijalle, UseHighConcurrency kun asetat molemmat parametrit.
  • Parametriarvot eivät ole kirjainkoon herkkiä.
  • UseHighConcurrency hyväksyy true, 1, yes, tai on HC-tilan aktivoimiseksi. Se hyväksyy false, 0, no, tai off HC-tilan poistamiseksi käytöstä.
  • Muiden ei-tyhjien arvojen kohdalla palauttaa SQLDriverConnect virheen. DSN-only SQLConnect kirjaa validointivirheen ja käyttää klassista polkua.

Yhteensopivuusasetukset

Ajuri hyväksyy TenantPrincipal ja PoolMax, mukaan lukien ympäristön muuttuvat varasuunnitelmat, yhteensopivuuden vuoksi aiempien HC-konfiguraatioiden kanssa. Ajuri jäsentää ja validoi nämä arvot, mutta ne eivät vaikuta HC-istuntojen sovitukseen tai ajonaikaiseen poolin kapasiteettiin. Älä luota niihin vuokralaisten eristyksessä tai yhteysrajoituksissa.

Ympäristömuuttujat varasuunnitelmat

Ajuri käyttää seuraavia ympäristömuuttujia vain, kun vastaavaa DSN- tai connection-string-parametria ei ole asetettu:

Ympäristön muuttuja Kartat
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 (vain yhteensopivuus)
FABRIC_ODBC_HC_HEARTBEAT_SECONDS HeartbeatTimeoutInSecond
FABRIC_ODBC_HC_ACQUIRE_TIMEOUT AcquireTimeoutSeconds
FABRIC_ODBC_HC_POOL_MAX PoolMax (vain yhteensopivuus)

Kun FABRIC_ODBC_USE_HC, pelkkä ympäristön mahdollistaminen tunnistaa true, 1, tai yes (sijainherkkyys). Muut arvot jättävät HC:n pois päältä. Ja-aliakset onoff koskevat vain DSN- ja yhteysmerkkijonojen arvoja.

Ympäristöasetukset

Voit liittää Fabric-ympäristön esineen Spark-istuntoon, jonka kuljettaja aloittaa. Valitun ympäristön kirjastot, Spark-ominaisuudet ja muuttujat otetaan automaattisesti käyttöön istunnon luomisen yhteydessä.

Parametri Tyyppi Oletus Kuvaus
EnvironmentId UUID Ei toistuvuutta Fabric-ympäristön kohdetunniste (GUID) käytettäväksi Spark-istunnon luomisen yhteydessä

Esimerkki yhteysmerkkijono, jossa on ympäristökohde:

DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};WorkspaceId=<workspace-id>;LakehouseId=<lakehouse-id>;AuthFlow=AZURE_CLI;EnvironmentId=<environment-id>

Muistio

Ympäristö aktivoituu, kun Spark-istunto alkaa. Jos määrität myös omat Spark-konfiguraatioominaisuudet, istuntotason ominaisuudet menevät ympäristön oletusten edelle.

Mukautettu Spark-konfiguraatio

Voit välittää Sparkin konfiguraatioominaisuudet suoraan yhteysmerkkijonoiin. Mikä tahansa parametri, joka on etuliite, spark. sovelletaan automaattisesti Spark-istuntoon luomishetkellä, jolloin voit ohittaa työtilan tai ajonaikaiset oletusasetukset.

Esimerkkejä kipinäkonfiguraatioista:

spark.sql.shuffle.partitions=200
spark.sql.adaptive.enabled=true
spark.sql.autoBroadcastJoinThreshold=10485760

Esimerkki yhteysmerkkijono mukautetuilla Spark-ominaisuuksilla:

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

Muistio

Kipinän konfiguraatioominaisuudet otetaan käyttöön istunnon luomisen yhteydessä. Ne koskevat kaikkia kyseisessä istunnossa suoritettuja kyselyjä ja ohittavat ympäristön tai ajonaikaiset oletusasetukset samoille ominaisuuksille.

Korkean samanaikaisuuden (HC) tila

High-concurrency (HC) -tila mahdollistaa ODBC-yhteyksien liittämisen samaan työtilaan ja lakehouseen yhteisiin, lämpimiin palvelinpuolen Livy Spark -sessioihin sen sijaan, että jokaiselle yhteydelle olisi oma klusteri. Käytä sitä työkuormiin, kuten BI-hallintapaneelit, notebook-ytimet ja ETL-hajautus, jotka avaavat monia lyhytikäisiä yhteyksiä ja voivat jakaa palvelimen hallinnoiman Spark-kapasiteetin.

HC-tila on vapaaehtoinen. Jos et määritä HC-asetusta, ajuri käyttää klassista yhden istunnon polkua.

Yhteystilan valitseminen

Käytä HC-tilaa, kun:

  • Työkuormasi avaa monia lyhytikäisiä ODBC-yhteyksiä, kuten BI-hallintapaneelit, notebook-ytimet tai ETL-hajautuksen.
  • Yhteydet kohdistuvat samaan työtilaan ja järvimajaan ja voivat jakaa palvelimen hallinnoiman Spark-istunnon.
  • Jokaisen yhteyden kylmäkäynnistyksen viiveen vähentäminen on tärkeää.

Käytä klassista tilaa, kun:

  • Jokainen yhteys vaatii erillisen Spark-istunnon erilaisten Spark-asetusten tai tiukan resurssieristyksen vuoksi.
  • Fabric Livy -päätepiste kohdetyötilalle ja järvitalolle ei tue HC-tilaa.

Ota käyttöön korkean samanaikaisuuden tila

Lisää DSN:ään tai yhteysmerkkijonoiin korkean samanaikaisuuden tilan parametri.

Suositeltava: Setti LivyMode

Käytä LivyMode valitaksesi istunnon hankintatilan eksplisiittisesti:

LivyMode=HighConcurrency

Tuettuja arvoja ovat Classic, HighConcurrencyja Auto. Arvot eivät ole kirjainkoon herkkiä. Auto tällä hetkellä valitsee klassisen tilan.

Vaihtoehto: Aseta UseHighConcurrency

Käytä Boolean-asetusta yhteensopivuuden varmistamiseksi olemassa olevien kokoonpanojen kanssa:

UseHighConcurrency=true

Korkean samanaikaisuuden tilan aktivoimiseksi käytä true, 1, yes, tai on. Poistaaksesi sen käytöstä, käytä false, 0, no, tai off. Arvot eivät ole kirjainkoon herkkiä. SQLDriverConnect hylkää muut ei-tyhjät arvot SQLSTATE HY024:llä . Pelkkä SQLConnect DSN-kirjaa validointivirheen ja käyttää klassista tilaa.

Muistio

Jos asetat molemmat parametrit, LivyMode se menee etusijalle .UseHighConcurrency

Vaaditut parametrit HC-tilassa

HC-aktivointi vaatii seuraavat kelvolliset tunnisteet:

Parametri Huomautuksia
WorkspaceId Sen täytyy olla voimassa oleva Fabric-työtilan GUID.
LakehouseId Sen täytyy olla voimassa oleva Fabric Lakehouse -käyttöliittymä.

Sisällytä SessionTag , koska se vaikuttaa palvelinpuolen matchaukseen lämpimissä sessioissa.

Istuntojen yhdistäminen

HC-tila ei takaa, että jokainen yhteys käyttää olemassa olevaa istuntoa uudelleen. Jokaisesta istuntokeruuspyynnöstä kuljettaja lähettää:

  • Arvo SessionTag .
  • Tehokas Spark-konfiguraatio, mukaan lukien conf.* asetukset ja EnvironmentId.

Fabric Livy -palvelu arvioi nämä arvot ja päättää, liitetäänkö yhteys lämpimään istuntoon vai luodako uusi istunto. Istunnon uudelleenkäytön parantamiseksi käytä yhtenäisiä arvoja yhteyksien välillä, joiden on tarkoitus jakaa palvelimen hallinnoima Spark-kapasiteetti.

Esimerkkejä yhteysmerkkijonoista

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 viritetyillä aikalisäillä:

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, jossa on ympäristö ja Spark-konfiilti, ohitukset:

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"
)

HC-tilan konfigurointi DSN:ssä

Voit tallentaa HC-asetukset DSN:ään sen sijaan, että toistaisit ne jokaisessa yhteysmerkkijono:ssä. Kun yhteysmerkkijono ei määritä arvoa, ajuri lukee seuraavat asetukset DSN:stä:

  • LivyMode
  • UseHighConcurrency
  • EnvironmentId
  • SessionTag
  • IdempotencyKey
  • HeartbeatTimeoutInSecond
  • AcquireTimeoutSeconds

Ajuri lukee myös pelkästään TenantPrincipal yhteensopivuuden ja PoolMax asetukset. Tallentaaksesi nämä asetukset, muokkaa DSN:ää tai odbcad32.exe käytä SQLWritePrivateProfileString. Käytä HC-asetustaulukon parametrien nimiä.

Tärkeää

Ajuri ei lue conf.* Spark-konfiguraatioiden ohituksia DSN:stä. Lisää ne yhteysmerkkijonoiin ajonaikaisesti tai injektoi ne ennen kuin kutsut SQLDriverConnect.

Poista HC-tila käytöstä

Voit poistaa uudet HC-istunnon hankinnat käytöstä ilman, että joudut ottamaan ajurin uudelleen käyttöön. Käytä menetelmää, joka vastaa HC-tilan käyttöönottoa:

HC-konfiguraatiolähde Kuinka poistaa HC-tila käytöstä
Vain ympäristömuuttuja Aseta FABRIC_ODBC_USE_HC=false, tai poista muuttuja.
DSN Asetettu LivyMode=Classic. Vaihtoehtoisesti poista LivyMode ja aseta UseHighConcurrency=false.
Yhteysjono Aseta LivyMode=Classic, tai poista HC-parametrit.

Yhteysmerkkijonon ja DSN-asetukset ovat etusijalla ympäristömuuttujan varasuunnitelmaan nähden. Nämä muutokset koskevat vain uusia yhteyksiä. Nykyiset HC-istunnot jatkuvat, kunnes ne julkaistaan.

Ymmärrä HC:n ajonaikainen käyttäytyminen

  • Validointi:SQLDriverConnect hylkää virheelliset HC Boolean- ja positiiviset kokonaislukuarvot SQLSTATE HY024:llä. Se hylkää virheellisen LivyMode ja virheellisen tai ylisuuren WorkspaceId, LakehouseId, ja IdempotencyKey arvot SQLSTATE-tilassa HY000. Ylisuurikokoinen yhteensopivuusarvo TenantPrincipal palauttaa HY000myös . Pelkästään SQLConnectDSN-tilassa ajuri kirjaa tavalliset HC-validointivirheet ja käyttää klassista tilaa. Ylisuuret turvallisuusherkät arvot epäonnistuvat silti yhteydessä.
  • Arkaluonteiset tiedot: Kuljettaja sulkee pois tai IdempotencyKey puhdistaa ja muut arkaluontoiset kentät HC-lokeista ja diagnostiikkatuotoksista.
  • Peruutus: Tiliotteen peruutus on yhteistyöhalua. Palvelintyö, joka on käynnissä, päättyy siististi sen sijaan, että lopetettaisiin välittömästi.
  • Katkaisijat: HC- ja klassikkotilat käyttävät erillisiä katkaisijoita. Yhden tilan loppuun käyttäminen ei vaikuta toiseen.
  • Alkuperäinen tietokanta: HC-yhteydet eivät suorita parametrin alkuperäistä USE lausetta Database . Suorita USE <database> yhdistämisen jälkeen tai käytä täysin päteviä taulukkonimiä.
  • Diagnostiikka: Asetettu LogLevel=DEBUG kirjaamaan HC:n hankinta-, kysely-, julkaisu- ja virhekartoituspäätökset. Kohdennettua vianmääritystä varten aseta LIVY_HC_VERBOSE=1 lisätyt puhdistetut HC HTTP -diagnostiikat.

Määritä DSN

Luo järjestelmän DSN

  1. Open ODBC Administrator

    %SystemRoot%\System32\odbcad32.exe
    
  2. Luo uusi järjestelmä DSN

    • Mene "System DSN" -välilehdelle
    • Valitse "Lisää"
    • Valitse "Microsoft ODBC Driver for Microsoft Fabric Data Engineering"
    • Valitse "Viimeistele"
  3. Määritä DSN-asetukset

    • Tietolähteen nimi: Syötä yksikäsitteinen nimi (esim. FabricODBC)
    • Kuvaus: Valinnainen kuvaus
    • Workspace ID: Fabric-työtilan GUID
    • Lakehouse ID: Kangasjärvimajan GUID
    • Tunnistautuminen: Valitse todennusmenetelmä
    • Environment ID (valinnainen): Syötä Fabric ympäristön elementin käyttöliittymä, joka liitetään istunnon luomisen yhteydessä
    • Livy-tila (valinnainen): Asetettu HC-tilaan HighConcurrency
    • Istuntotunniste (valinnainen): Syötä ei-herkkä operatiivinen tunniste HC-istunto-yhteensopivuudelle
    • Säädä lisäasetuksia tarpeen mukaan
  4. Testiyhteys

    • Valitse "Test Connection" vahvistaaksesi asetukset
    • Valitse "OK" tallentaaksesi

Käytä DSN:ää sovelluksissa

# Python - Connect using DSN
conn = pyodbc.connect("DSN=FabricODBC")
// .NET - Connect using DSN
using var connection = new OdbcConnection("DSN=FabricODBC");
await connection.OpenAsync();

Käyttöesimerkkejä

Perusyhteys ja kysely

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));
            }
        }
    }
}

Työskentely suurten tulosjoukkojen kanssa

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()

Suorita DML-lauseet

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;
}

Käytä executeDml , INSERTUPDATE, tai DELETE lauseita. Raportoitu rivimäärä riippuu siitä, sisältääkö tulos kuljettajan tunnistaman päivitysmäärän.

Skeeman löytö

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()

Tietotyyppien kartoittaminen

Ajuri kartoittaa Spark SQL -tietotyypit ODBC:n SQL-tyyppeihin:

Spark SQL Type ODBC SQL Type C/C++-tyyppi Python-tyyppi NET-tyyppi
BOOLEAN SQL_BIT SQLCHAR bool bool
BYTE SQL_TINYINT SQLSCHAR int sbyte
LYHYT SQL_SMALLINT SQLSMALLINT int lyhyt
INT SQL_INTEGER SQLINTEGER int int
PITKÄ SQL_BIGINT SQLBIGINT int long
KELLUA SQL_REAL SQLREAL liukuluku liukuluku
KAKSINKERTAINEN SQL_DOUBLE SQLDOUBLE liukuluku double
DESIMAALI SQL_DECIMAL SQLCHAR* desimaali. Desimaali desimaali
MERKKIJONO SQL_VARCHAR SQLCHAR* Str merkkijono
VARCHAR(n) SQL_VARCHAR SQLCHAR* Str merkkijono
CHAR(n) SQL_CHAR SQLCHAR* Str merkkijono
BINÄÄRI SQL_VARBINARY SQLCHAR* tavut tavu[]
PÄIVÄMÄÄRÄ SQL_TYPE_DATE SQL_DATE_STRUCT datetime.date Päivämäärä ja aika
AIKALEIMA SQL_TYPE_TIMESTAMP SQL_TIMESTAMP_STRUCT datetime.datetime Päivämäärä ja aika
VALIKOIMA SQL_VARCHAR SQLCHAR* voima (JSON) merkkijono
KARTTA SQL_VARCHAR SQLCHAR* voima (JSON) merkkijono
RAKENNE SQL_VARCHAR SQLCHAR* voima (JSON) merkkijono

BI-työkalujen integrointi

Microsoft Excel

  1. Open Excel -> Data -> Hae dataa -> muista lähteistä -> ODBC:stä
  2. Valitse konfiguroitu DSN (esim. FabricODBC)
  3. Autentikointi, jos pyydetään
  4. Selaa ja valitse taulukot
  5. Lataa data Excel-työarkisteeseen

Power BI Desktop

  1. Avaa Power BI työpöytä -> Hae data -> ODBC
  2. Valitse konfiguroidun DSN-tunnuksesi
  3. Selaa tietoluetteloa ja valitse taulukot
  4. Muunna dataa tarpeen mukaan
  5. Visualisointien luominen

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;

Vianmääritys

Tämä osio antaa ohjeita yleisten ongelmien ratkaisemiseen, joita saatat kohdata Microsoft ODBC Driver for Microsoft Fabric Data Engineering -ajuria käyttäessäsi.

Yleisiä ongelmia

Seuraavissa osioissa kuvataan yleisiä ongelmia ja niiden ratkaisuja:

Yhteyden epäonnistumiset

Ongelma: En saa yhteyttä Fabric-ohjelmaan

Ratkaisut:

  1. Varmista, että työtilan ID ja järvimajan ID ovat oikeat GUID-kuvat
  2. Tarkista Azure CLI -autentikointi: az account show
  3. Varmista, että sinulla on asianmukaiset Fabric-työtilaoikeudet
  4. Tarkista verkkoyhteys ja välityspalvelinasetukset

Todennusvirheet

Ongelma: Todennus epäonnistuu Azure CLI:llä

Ratkaisut:

  • Juokse az login päivittääksesi tunnukset
  • Varmista oikea vuokralainen: az account set --subscription <subscription-id>
  • Tarkista tokenin pätevyys: az account get-access-token --resource https://api.fabric.microsoft.com

Kyselyn aikakatkaisut

Ongelma: Kyselyt aikakatkaistuvat suurilla tauluilla

Ratkaisut:

  • LargeTableSupport=true ottaminen käyttöön
  • Säädä PageSizeBytes optimaalisen lohkon kokoa
  • Ota käyttöön asynkroninen esilataus: EnableAsyncPrefetch=1
  • Käytä LIMIT lauseketta tuloskoon rajoittamiseen

Lokituksen ottaminen käyttöön

Ongelmien vianetsinnässä yksityiskohtainen lokitus voi auttaa tunnistamaan juurisyyn. Voit ottaa kirjautumisen käyttöön yhteysjonon kautta.

Yksityiskohtaisen lokituksen mahdollistamiseksi:

LogLevel=DEBUG;LogFile=C:\temp\odbc_driver_debug.log;

Lokitasot:

  • DEBUG: Yksityiskohtaiset virheenkorjaustiedot ja kaikkein monisanaisin ajurilokitaso
  • INFO: Yleistä tietoa (oletus)
  • WARN: Vain varoitukset
  • ERROR: Vain virheet

ODBC:n jäljitys

Matalan tason diagnostiikkaan voit ottaa käyttöön Windowsin ODBC-jäljityksen, joka tallentaa yksityiskohtaisia ODBC-API-kutsuja ja ajurien käyttäytymistä. Muista poistaa jäljitys käytöstä, kun sitä ei tarvita, jotta suorituskyky pysyy optimaalisena.

ODBC-jäljityksen mahdollistamiseksi:

  1. Avaa odbcad32.exe
  2. Mene "Jäljitys"-välilehdelle
  3. Aseta jäljitystiedoston polku (esim. C:\temp\odbctrace.log)
  4. Valitse "Aloita jäljitys nyt"
  5. Toista numero
  6. Valitse "Lopeta jäljittäminen nyt"