Muistiinpano
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää kirjautua sisään tai vaihtaa hakemistoa.
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää vaihtaa hakemistoa.
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
- Lataa Microsoft ODBC Driver for Microsoft Fabric Data Engineering MSI -paketti
- Kaksoisklikkaus
MicrosoftFabricODBCDriver-2.0.msi. - Seuraa asennusohjainta ja hyväksy lisenssisopimus
- Valitse asennushakemisto (oletus:
C:\Program Files\Microsoft ODBC Driver for Microsoft Fabric Data Engineering\) - 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:
- Suorita
odbcad32.exe(ODBC Data Source Administrator) - Siirry Kuljettajat-välilehdelle
- 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
-
LivyModeSe menee etusijalle,UseHighConcurrencykun asetat molemmat parametrit. - Parametriarvot eivät ole kirjainkoon herkkiä.
-
UseHighConcurrencyhyväksyytrue,1,yes, taionHC-tilan aktivoimiseksi. Se hyväksyyfalse,0,no, taioffHC-tilan poistamiseksi käytöstä. - Muiden ei-tyhjien arvojen kohdalla palauttaa
SQLDriverConnectvirheen. DSN-onlySQLConnectkirjaa 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 jaEnvironmentId.
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ä:
LivyModeUseHighConcurrencyEnvironmentIdSessionTagIdempotencyKeyHeartbeatTimeoutInSecondAcquireTimeoutSeconds
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:
SQLDriverConnecthylkää virheelliset HC Boolean- ja positiiviset kokonaislukuarvot SQLSTATEHY024:llä. Se hylkää virheellisenLivyModeja virheellisen tai ylisuurenWorkspaceId,LakehouseId, jaIdempotencyKeyarvot SQLSTATE-tilassaHY000. Ylisuurikokoinen yhteensopivuusarvoTenantPrincipalpalauttaaHY000myös . PelkästäänSQLConnectDSN-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
IdempotencyKeypuhdistaa 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ä
USElausettaDatabase. SuoritaUSE <database>yhdistämisen jälkeen tai käytä täysin päteviä taulukkonimiä. -
Diagnostiikka: Asetettu
LogLevel=DEBUGkirjaamaan HC:n hankinta-, kysely-, julkaisu- ja virhekartoituspäätökset. Kohdennettua vianmääritystä varten asetaLIVY_HC_VERBOSE=1lisätyt puhdistetut HC HTTP -diagnostiikat.
Määritä DSN
Luo järjestelmän DSN
Open ODBC Administrator
%SystemRoot%\System32\odbcad32.exeLuo uusi järjestelmä DSN
- Mene "System DSN" -välilehdelle
- Valitse "Lisää"
- Valitse "Microsoft ODBC Driver for Microsoft Fabric Data Engineering"
- Valitse "Viimeistele"
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
-
Tietolähteen nimi: Syötä yksikäsitteinen nimi (esim.
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
- Open Excel -> Data -> Hae dataa -> muista lähteistä -> ODBC:stä
- Valitse konfiguroitu DSN (esim.
FabricODBC) - Autentikointi, jos pyydetään
- Selaa ja valitse taulukot
- Lataa data Excel-työarkisteeseen
Power BI Desktop
- Avaa Power BI työpöytä -> Hae data -> ODBC
- Valitse konfiguroidun DSN-tunnuksesi
- Selaa tietoluetteloa ja valitse taulukot
- Muunna dataa tarpeen mukaan
- 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:
- Varmista, että työtilan ID ja järvimajan ID ovat oikeat GUID-kuvat
- Tarkista Azure CLI -autentikointi:
az account show - Varmista, että sinulla on asianmukaiset Fabric-työtilaoikeudet
- Tarkista verkkoyhteys ja välityspalvelinasetukset
Todennusvirheet
Ongelma: Todennus epäonnistuu Azure CLI:llä
Ratkaisut:
- Juokse
az loginpä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=trueottaminen käyttöön - Säädä
PageSizeBytesoptimaalisen lohkon kokoa - Ota käyttöön asynkroninen esilataus:
EnableAsyncPrefetch=1 - Käytä
LIMITlauseketta 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:
- Avaa
odbcad32.exe - Mene "Jäljitys"-välilehdelle
- Aseta jäljitystiedoston polku (esim.
C:\temp\odbctrace.log) - Valitse "Aloita jäljitys nyt"
- Toista numero
- Valitse "Lopeta jäljittäminen nyt"