Πρόγραμμα οδήγησης Microsoft ODBC για Microsoft Fabric Data Engineering

Το ODBC (Open Database Connectivity) είναι ένα ευρέως διαδεδομένο πρότυπο που επιτρέπει στις εφαρμογές-πελάτες να συνδέονται και να εργάζονται με δεδομένα από βάσεις δεδομένων και πλατφόρμες μεγάλων δεδομένων.

Το πρόγραμμα οδήγησης Microsoft ODBC για Fabric Data Engineering σάς επιτρέπει να συνδέετε, να υποβάλλετε ερωτήματα και να διαχειρίζεστε φόρτους εργασίας Spark στο Fabric με την αξιοπιστία και την απλότητα του προτύπου ODBC. Χτισμένο στα API Livy του Fabric, το πρόγραμμα οδήγησης παρέχει ασφαλή και ευέλικτη συνδεσιμότητα Spark SQL με τις εφαρμογές C/C++, .NET, Python και άλλες εφαρμογές και εργαλεία BI που είναι συμβατές με ODBC.

Δυνατότητες κλειδιά

  • Συμβατό με ODBC 3.x: Πλήρης εφαρμογή της προδιαγραφής ODBC 3.x
  • Microsoft Entra ID έλεγχος ταυτότητας: Πολλαπλές ροές ελέγχου ταυτότητας, συμπεριλαμβανομένων Azure CLI, αλληλεπιδραστικών, διαπιστευτηρίων προγράμματος-πελάτη, ελέγχου ταυτότητας βάσει πιστοποιητικών και διακριτικού πρόσβασης
  • Υποστήριξη ερωτημάτων Spark SQL: Άμεση εκτέλεση δηλώσεων Spark SQL
  • Ολοκληρωμένη υποστήριξη τύπου δεδομένων: Υποστήριξη για όλους τους τύπους δεδομένων Spark SQL, συμπεριλαμβανομένων των πολύπλοκων τύπων (ARRAY, MAP, STRUCT)
  • Επαναχρησιμοποίηση συνεδρίας: Ενσωματωμένη διαχείριση συνεδρίας για βελτιωμένη απόδοση
  • Λειτουργία υψηλής ταυτόχρονης λειτουργίας: Επιλέξτε κοινόχρηστες, θερμές συνεδρίες Livy από την πλευρά του διακομιστή για να μειώσετε τον λανθάνοντα χρόνο εκκίνησης της σύνδεσης και την εξάπλωση του συμπλέγματος Spark
  • Υποστήριξη μεγάλου πίνακα: Βελτιστοποιημένος χειρισμός για μεγάλα σύνολα αποτελεσμάτων με διαμορφώσιμα μεγέθη σελίδας
  • Ασύγχρονη προφόρτωση: Φόρτωση δεδομένων παρασκηνίου για βελτιωμένη απόδοση
  • Υποστήριξη διακομιστή μεσολάβησης: Ρύθμιση παραμέτρων διακομιστή μεσολάβησης HTTP για εταιρικά περιβάλλοντα
  • Υποστήριξη lakehouse πολλαπλών σχημάτων: Σύνδεση σε συγκεκριμένο σχήμα μέσα σε ένα lakehouse
  • Ενοποίηση OneLake: Αποκτήστε πρόσβαση σε δεδομένα lakehouse που είναι αποθηκευμένα στο OneLake, συμπεριλαμβανομένων πινάκων σε πολλά σχήματα, μέσω μιας ενοποιημένης διεπαφής ODBC χωρίς ξεχωριστή ρύθμιση παραμέτρων αποθήκευσης
  • Υποστήριξη στοιχείων περιβάλλοντος: Επισυνάψτε Fabric στοιχεία περιβάλλοντος κατά την εκτέλεση της εργασίας για να εφαρμόσετε βιβλιοθήκες χώρου εργασίας, ιδιότητες Spark και μεταβλητές σε κάθε περίοδο λειτουργίας
  • Προσαρμοσμένη ρύθμιση παραμέτρων Spark: Μεταβιβάστε τις ιδιότητες ρύθμισης παραμέτρων Spark απευθείας μέσω του συμβολοσειρά σύνδεσης για να ρυθμίσετε τη συμπεριφορά της περιόδου λειτουργίας

Σημείωμα

Στο Apache Spark ανοιχτού κώδικα, η βάση δεδομένων και το σχήμα χρησιμοποιούνται συνώνυμα. Για παράδειγμα, η εκτέλεση SHOW SCHEMAS ή SHOW DATABASES σε ένα σημειωματάριο Fabric επιστρέφει το ίδιο αποτέλεσμα — μια λίστα με όλα τα σχήματα στο lakehouse.

Προαπαιτούμενα

Πριν χρησιμοποιήσετε το πρόγραμμα οδήγησης ODBC της Microsoft για το Microsoft Fabric Data Engineering, βεβαιωθείτε ότι έχετε:

  • Λειτουργικό σύστημα: Windows 10/11 ή Windows Server 2016+
  • Fabric Access: Πρόσβαση σε χώρο εργασίας Fabric
  • Microsoft Entra ID διαπιστευτήρια: Κατάλληλα διαπιστευτήρια για έλεγχο ταυτότητας
  • Αναγνωριστικά χώρου εργασίας και lakehouse: Αναγνωριστικά GUID για τον χώρο εργασίας Fabric και το lakehouse
  • Azure CLI (προαιρετικό): Απαιτείται για τη μέθοδο ελέγχου ταυτότητας Azure CLI

Λήψη και εγκατάσταση MSI

  1. Λήψη του πακέτου MSI του προγράμματος οδήγησης Microsoft ODBC για το Microsoft Fabric Data Engineering
  2. Κάντε διπλό κλικ στο MicrosoftFabricODBCDriver-2.0.msi.
  3. Ακολουθήστε τον οδηγό εγκατάστασης και αποδεχτείτε την άδεια χρήσης
  4. Επιλέξτε κατάλογο εγκατάστασης (προεπιλογή: C:\Program Files\Microsoft ODBC Driver for Microsoft Fabric Data Engineering\)
  5. Ολοκληρώστε την εγκατάσταση

Σιωπηρή εγκατάσταση

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

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

Επαλήθευση εγκατάστασης

Μετά την εγκατάσταση, βεβαιωθείτε ότι το πρόγραμμα οδήγησης είναι καταχωρημένο:

  1. Εκτέλεση odbcad32.exe (Διαχειριστής προέλευσης δεδομένων ODBC)
  2. Μεταβείτε στην καρτέλα Προγράμματα οδήγησης
  3. Βεβαιωθείτε ότι παρατίθεται το "Πρόγραμμα οδήγησης Microsoft ODBC για Microsoft Fabric Data Engineering"

Παράδειγμα γρήγορης εκκίνησης

Αυτό το παράδειγμα δείχνει πώς μπορείτε να συνδεθείτε στο Fabric και να εκτελέσετε ένα ερώτημα χρησιμοποιώντας το πρόγραμμα οδήγησης ODBC της Microsoft για το Microsoft Fabric Data Engineering. Πριν εκτελέσετε αυτόν τον κωδικό, βεβαιωθείτε ότι έχετε ολοκληρώσει τις προϋποθέσεις και έχετε εγκαταστήσει το πρόγραμμα οδήγησης.

Παράδειγμα C/C++

#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

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

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

Μορφή συμβολοσειράς σύνδεσης

Βασική συμβολοσειρά σύνδεσης

Το πρόγραμμα οδήγησης ODBC της Microsoft για το Microsoft Fabric Data Engineering χρησιμοποιεί την ακόλουθη μορφή συμβολοσειράς σύνδεσης:

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

Στοιχεία συμβολοσειράς σύνδεσης

Στοιχείο Περιγραφή Παράδειγμα
ΟΔΗΓΟΣ Αναγνωριστικό προγράμματος οδήγησης ODBC {Microsoft ODBC Driver for Microsoft Fabric Data Engineering}
WorkspaceId Fabric workspace identifier (GUID) xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx
LakehouseId Fabric lakehouse αναγνωριστικό (GUID) xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx
Ροή ελέγχου ταυτότητας Μέθοδο ελέγχου ταυτότητας AZURE_CLI, INTERACTIVE, CLIENT_CREDENTIAL, , CLIENT_CERTIFICATE, ACCESS_TOKENFILE_TOKEN

Παράδειγμα συμβολοσειρών σύνδεσης

Βασική σύνδεση (έλεγχος ταυτότητας Azure CLI)

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

Με επιλογές απόδοσης

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

Με καταγραφή

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

Με λειτουργία υψηλής ταυτόχρονης λειτουργίας

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

Ανατρέξτε στην ενότητα ΛειτουργίαHigh-Concurrency (HC) για πλήρεις οδηγίες διαμόρφωσης.

Έλεγχος ταυτότητας

Το πρόγραμμα οδήγησης Microsoft ODBC για το Microsoft Fabric Data Engineering υποστηρίζει πολλές μεθόδους ελέγχου ταυτότητας μέσω του Microsoft Entra ID (πρώην Azure Active Directory). Ο έλεγχος ταυτότητας διαμορφώνεται χρησιμοποιώντας την AuthFlow παράμετρο στη συμβολοσειρά σύνδεσης.

Μέθοδοι ελέγχου ταυτότητας

Τιμή AuthFlow Περιγραφή
CLIENT_CREDENTIAL (0) Κύρια υπηρεσία με μυστικό πελάτη. Ψευδώνυμο: CLIENT_SECRET_CREDENTIAL.
BROWSER_BASED (1) Αλληλεπιδραστικός έλεγχος ταυτότητας μέσω προγράμματος περιήγησης. Ψευδώνυμο: INTERACTIVE.
AZURE_CLI (2) Ανάπτυξη με χρήση διαπιστευτηρίων Azure CLI.
CLIENT_CERTIFICATE_CREDENTIAL (3) Διευθυντής υπηρεσίας με πιστοποιητικό. Ψευδώνυμο: CLIENT_CERTIFICATE.
AUTH_ACCESS_TOKEN (4) Προαποκτηθέν διακριτικό πρόσβασης κομιστή. Ψευδώνυμο: ACCESS_TOKEN.
FILE_TOKEN (5) Διαβάζει ένα διακριτικό ελέγχου ταυτότητας από ένα αρχείο.

Μπορείτε να καθορίσετε τιμές ελέγχου ταυτότητας με κεφαλαία γράμματα φιδιού, πεζά Pascal ή αριθμητική μορφή. Το πρόγραμμα οδήγησης δέχεται επίσης σύντομα ψευδώνυμα όπως Browser, Interactive, CLI, Certificate, Tokenκαι File. Ο οδηγός αγνοεί τις υπογραμμίσεις όταν συγκρίνει τιμές.

Έλεγχος ταυτότητας Azure CLI

Καλύτερα για: Ανάπτυξη και διαδραστικές εφαρμογές

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

Προαπαιτούμενα:

  • Εγκατεστημένο Azure CLI: az --version
  • Συνδεδεμένος: az login

Αλληλεπιδραστικός έλεγχος ταυτότητας προγράμματος περιήγησης

Καλύτερα για: Εφαρμογές που απευθύνονται στον χρήστη

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

Συμπεριφορά:

  • Ανοίγει ένα παράθυρο του προγράμματος περιήγησης για έλεγχο ταυτότητας χρήστη
  • Τα διαπιστευτήρια αποθηκεύονται προσωρινά για τις επόμενες συνδέσεις

Έλεγχος ταυτότητας διαπιστευτηρίων προγράμματος-πελάτη (κύρια υπηρεσία)

Καλύτερα για: Αυτοματοποιημένες υπηρεσίες και εργασίες παρασκηνίου

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

Απαιτούμενες παράμετροι

  • TenantId: Αναγνωριστικό μισθωτή Azure
  • ClientId: Αναγνωριστικό εφαρμογής (προγράμματος-πελάτη) από το Microsoft Entra ID
  • ClientSecret: Μυστικός κωδικός προγράμματος-πελάτη από το Microsoft Entra ID

Βέλτιστες πρακτικές

  • Αποθηκεύστε τα μυστικά με ασφάλεια (Azure Key Vault, μεταβλητές περιβάλλοντος)
  • Χρήση διαχειριζόμενων ταυτοτήτων όταν είναι δυνατό
  • Εναλλάσσετε τακτικά μυστικά

Έλεγχος ταυτότητας βασισμένος σε πιστοποιητικό

Ιδανικό για: Εταιρικές εφαρμογές που απαιτούν έλεγχο ταυτότητας βάσει πιστοποιητικών

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

Απαιτούμενες παράμετροι:

  • TenantId: Αναγνωριστικό μισθωτή Azure
  • ClientId: Αναγνωριστικό εφαρμογής (προγράμματος-πελάτη)
  • CertificatePath: Διαδρομή προς το αρχείο πιστοποιητικού PFX/PKCS12
  • CertificatePassword: Κωδικός πρόσβασης πιστοποιητικού

Έλεγχος ταυτότητας διακριτικού πρόσβασης

Ιδανικό για: Προσαρμοσμένα σενάρια ελέγχου ταυτότητας

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

Έλεγχος ταυτότητας διακριτικού αρχείου

Χρησιμοποιήστε τον έλεγχο ταυτότητας διακριτικού αρχείου για περιβάλλοντα με κοντέινερ και αυτοματοποιημένες διοχετεύσεις όπου μια άλλη διεργασία εγγράφει ένα διακριτικό φορέα στο γνωστό αρχείο διακριτικού του προγράμματος οδήγησης:

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

Το πρόγραμμα οδήγησης επιλύει τη θέση του αρχείου διακριτικού σε Windows και Linux.

Ψευδώνυμα ιδιοτήτων cross-driver

Το πρόγραμμα οδήγησης ODBC δέχεται επιλεγμένα ονόματα ιδιοτήτων ADO.NET και JDBC εκτός από τα εγγενή ονόματα ODBC. Αυτή η υποστήριξη μπορεί να μειώσει τις αλλαγές συμβολοσειράς σύνδεσης όταν μετακινείστε μεταξύ προγραμμάτων οδήγησης Fabric.

Ιδιότητα ADO.NET ή JDBC Ισοδύναμο ODBC
FabricWorkspaceID WorkspaceId
FabricLakehouseID LakehouseId
LivySessionTimeoutSeconds Χρονικό όριο σύνδεσης
LivyStatementTimeoutSeconds Χρονικό όριο δήλωσης
ConnectionPoolEnabled Ενεργοποίηση πισίνας

Το πρόγραμμα οδήγησης επιλύει 17 ψευδώνυμα μεταξύ προγραμμάτων οδήγησης κατά τη σύνδεση.

Παράμετροι διαμόρφωσης

Απαιτούμενες παράμετροι

Αυτές οι παράμετροι πρέπει να υπάρχουν σε κάθε συμβολοσειρά σύνδεσης:

Παράμετρος Τύπος Περιγραφή Παράδειγμα
WorkspaceId UUID Αναγνωριστικό χώρου εργασίας Fabric 4bbf89a8-...
LakehouseId UUID Αναγνωριστικό Fabric lakehouse d8faa650-...
Ροή ελέγχου ταυτότητας Συμβλοσειρά Τύπος ροής ελέγχου ταυτότητας AZURE_CLI

Προαιρετικές παράμετροι

Ρυθμίσεις σύνδεσης

Παράμετρος Τύπος Προεπιλεγμένος Περιγραφή
Βάση δεδομένων Συμβλοσειρά Κανένα Αρχική βάση δεδομένων για κλασική λειτουργία. Η λειτουργία HC δεν την εφαρμόζει αυτόματα. εκτελείται USE <database> μετά τη σύνδεση ή χρησιμοποιήστε πλήρως προσδιορισμένα ονόματα πινάκων.
Πεδίο Συμβλοσειρά https://api.fabric.microsoft.com/.default Πεδίο εφαρμογής OAuth

Ρυθμίσεις απόδοσης

Παράμετρος Τύπος Προεπιλεγμένος Περιγραφή
ΕπαναχρησιμοποίησηΣυνεδρία Boolean true Επαναχρησιμοποίηση υπάρχουσας περιόδου λειτουργίας Spark
Υποστήριξη LargeTableSupport Boolean false Ενεργοποίηση βελτιστοποιήσεων για μεγάλα σύνολα αποτελεσμάτων
Ενεργοποίηση AsyncPrefetch Boolean false Ενεργοποίηση προφόρτωσης δεδομένων παρασκηνίου
PageSizeBytes Ακέραιος 18874368 (18 MB) Μέγεθος σελίδας για σελιδοποίηση αποτελεσμάτων (1-18 MB)

Ρυθμίσεις καταγραφής

Παράμετρος Τύπος Προεπιλεγμένος Περιγραφή
Επίπεδο καταγραφής Συμβλοσειρά INFO Επίπεδο καταγραφής: DEBUG, INFO, WARN, ή ERROR. Χρησιμοποιήστε το DEBUG για λεπτομερή διαγνωστικό έλεγχο του προγράμματος οδήγησης.
Αρχείο καταγραφής Συμβλοσειρά odbc_driver.log Διαδρομή αρχείου καταγραφής (απόλυτη ή σχετική)

Ρυθμίσεις διακομιστή μεσολάβησης

Παράμετρος Τύπος Προεπιλεγμένος Περιγραφή
Χρήσηδιακομιστή μεσολάβησης Boolean false Ενεργοποίηση διακομιστή μεσολάβησης
Διακομιστής μεσολάβησης Συμβλοσειρά Κανένα Όνομα κεντρικού υπολογιστή διακομιστή μεσολάβησης
Θύρα διακομιστή μεσολάβησης Ακέραιος Κανένα Θύρα διακομιστή μεσολάβησης
Όνομα χρήστη διακομιστή μεσολάβησης Συμβλοσειρά Κανένα Όνομα χρήστη ελέγχου ταυτότητας διακομιστή μεσολάβησης
Κωδικός μεσολάβησης Συμβλοσειρά Κανένα Κωδικός πρόσβασης ελέγχου ταυτότητας διακομιστή μεσολάβησης

Ρυθμίσεις υψηλής ταυτοχρονισμού (HC)

Χρησιμοποιήστε αυτές τις παραμέτρους για να ενεργοποιήσετε και να διαμορφώσετε τη λειτουργία υψηλής ταυτόχρονης εκτέλεσης (HC). Η λειτουργία HC είναι προαιρετική. Εάν δεν ορίσετε LivyMode ή UseHighConcurrency, το πρόγραμμα οδήγησης χρησιμοποιεί την κλασική διαδρομή μίας περιόδου λειτουργίας. Για οδηγίες και παραδείγματα, ανατρέξτε στο θέμα Λειτουργία υψηλής ταυτόχρονης εκτέλεσης (HC).

Παράμετρος Τύπος Προεπιλεγμένος Περιγραφή
LivyMode Συμβλοσειρά Δεν έχει οριστεί Ελέγχει την απόκτηση συνεδρίας. Οι υποστηριζόμενες τιμές είναι Classic, HighConcurrencyκαι Auto. Auto Προς το παρόν χρησιμοποιεί την κλασική διαδρομή.
UseHighConcurrency Boolean false Ενεργοποιεί τη λειτουργία HC ως εναλλακτική λύση στη ρύθμιση LivyMode=HighConcurrency.
SessionTag Συμβλοσειρά Κανένα Παρέχει μια υπόδειξη συσκευασίας από την πλευρά του διακομιστή. Οι συνδέσεις πρέπει να χρησιμοποιούν αντίστοιχες ρυθμίσεις από την πλευρά του διακομιστή για να μοιράζονται μια ζεστή συνεδρία Livy.
IdempotencyKey Συμβλοσειρά Κανένα Παρέχει ένα κλειδί που δημιουργείται από τον πελάτη για ασφαλείς επαναλήψεις απόκτησης HC. Το πρόγραμμα οδήγησης επικυρώνει το σύνολο χαρακτήρων και δεν καταγράφει ποτέ την τιμή.
EnvironmentId Συμβλοσειρά Κανένα Καθορίζει το αναγνωριστικό περιβάλλοντος Fabric που αποστέλλεται όπως spark.fabric.environmentDetails στη ρύθμιση παραμέτρων απόκτησης HC.
HeartbeatTimeoutInSecond Ακέραιος Προεπιλογή διακομιστή Ορίζει το χρονικό όριο αδράνειας της περιόδου λειτουργίας HC από την πλευρά του διακομιστή, σε δευτερόλεπτα. Η τιμή πρέπει να είναι θετικός ακέραιος.
AcquireTimeoutSeconds Ακέραιος 300 Ορίζει το χρονικό διάστημα αναμονής του προγράμματος οδήγησης για να φτάσει μια περίοδος λειτουργίας HC στην Idle κατάσταση, σε δευτερόλεπτα. Η τιμή πρέπει να είναι θετικός ακέραιος.
conf.<key> Συμβλοσειρά Κανένα Καθορίζει μια παράκαμψη ρύθμισης παραμέτρων Spark που αποστέλλεται στην αίτηση απόκτησης HC. Για παράδειγμα, conf.spark.sql.shuffle.partitions=200.

Προτεραιότητα και επικύρωση τρόπου λειτουργίας

  • LivyMode έχει προτεραιότητα UseHighConcurrency όταν ορίζετε και τις δύο παραμέτρους.
  • Στις τιμές των παραμέτρων δεν γίνεται διάκριση πεζών-κεφαλαίων.
  • UseHighConcurrency δέχεται true, 1, , yesή on για να ενεργοποιήσετε τη λειτουργία HC. Δέχεται false, 0, , noή off για να απενεργοποιήσει τη λειτουργία HC.
  • Για άλλες μη κενές τιμές, SQLDriverConnect το επιστρέφει σφάλμα. Μόνο DSN SQLConnect καταγράφει την αποτυχία επικύρωσης και χρησιμοποιεί την κλασική διαδρομή.

Ρυθμίσεις συμβατότητας

Το πρόγραμμα οδήγησης δέχεται TenantPrincipal και PoolMax, συμπεριλαμβανομένων των εναλλακτικών μεταβλητών περιβάλλοντος, για συμβατότητα με προηγούμενες διαμορφώσεις HC. Το πρόγραμμα οδήγησης αναλύει και επικυρώνει αυτές τις τιμές, αλλά δεν επηρεάζουν την αντιστοίχιση περιόδων λειτουργίας HC ή τη χωρητικότητα του χώρου συγκέντρωσης χρόνου εκτέλεσης. Μην βασίζεστε σε αυτά για την απομόνωση ενοικιαστών ή τα όρια σύνδεσης.

Εναλλακτικές μεταβλητές περιβάλλοντος

Το πρόγραμμα οδήγησης χρησιμοποιεί τις ακόλουθες μεταβλητές περιβάλλοντος μόνο όταν δεν έχει οριστεί η αντίστοιχη παράμετρος DSN ή συμβολοσειράς σύνδεσης:

Μεταβλητή περιβάλλοντος Χάρτες προς
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 (μόνο συμβατότητα)
FABRIC_ODBC_HC_HEARTBEAT_SECONDS HeartbeatTimeoutInSecond
FABRIC_ODBC_HC_ACQUIRE_TIMEOUT AcquireTimeoutSeconds
FABRIC_ODBC_HC_POOL_MAX PoolMax (μόνο συμβατότητα)

Για FABRIC_ODBC_USE_HCτο , η ενεργοποίηση μόνο για trueπεριβάλλον αναγνωρίζει , 1ή yes (χωρίς διάκριση πεζών-κεφαλαίων). Άλλες τιμές αφήνουν το HC απενεργοποιημένο. Τα on ψευδώνυμα και off ισχύουν μόνο για τιμές DSN και συμβολοσειράς σύνδεσης.

Ρυθμίσεις περιβάλλοντος

Μπορείτε να επισυνάψετε ένα στοιχείο περιβάλλοντος Fabric στην περίοδο λειτουργίας Spark που ξεκίνησε από το πρόγραμμα οδήγησης. Οι βιβλιοθήκες, οι ιδιότητες Spark και οι μεταβλητές του επιλεγμένου περιβάλλοντος εφαρμόζονται αυτόματα κατά τη δημιουργία της συνεδρίας.

Παράμετρος Τύπος Προεπιλεγμένος Περιγραφή
EnvironmentId UUID Κανένα Αναγνωριστικό στοιχείου περιβάλλοντος Fabric (GUID) που θα εφαρμοστεί κατά τη δημιουργία περιόδου λειτουργίας Spark

Παράδειγμα συμβολοσειρά σύνδεσης με ένα στοιχείο περιβάλλοντος:

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

Σημείωμα

Το περιβάλλον εφαρμόζεται κατά την έναρξη της περιόδου λειτουργίας Spark. Εάν καθορίσετε επίσης προσαρμοσμένες ιδιότητες ρύθμισης παραμέτρων Spark, οι ιδιότητες σε επίπεδο συνεδρίας έχουν προτεραιότητα έναντι των προεπιλογών περιβάλλοντος.

Προσαρμοσμένη ρύθμιση παραμέτρων Spark

Μπορείτε να μεταβιβάσετε τις ιδιότητες ρύθμισης παραμέτρων Spark απευθείας στη συμβολοσειρά σύνδεσης. Οποιαδήποτε παράμετρος με πρόθεμα spark. εφαρμόζεται αυτόματα στην περίοδο λειτουργίας Spark κατά τη στιγμή της δημιουργίας, επιτρέποντάς σας να παρακάμψετε τις προεπιλογές χώρου εργασίας ή χρόνου εκτέλεσης.

Παράδειγμα διαμορφώσεων Spark:

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

Παράδειγμα συμβολοσειρά σύνδεσης με προσαρμοσμένες ιδιότητες Spark:

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

Σημείωμα

Οι ιδιότητες ρύθμισης σπινθήρα εφαρμόζονται κατά τη δημιουργία της συνεδρίας. Εφαρμόζονται σε όλα τα ερωτήματα που εκτελούνται εντός αυτής της περιόδου λειτουργίας και παρακάμπτουν τις προεπιλογές περιβάλλοντος ή χρόνου εκτέλεσης για τις ίδιες ιδιότητες.

Λειτουργία υψηλής ταυτοχρονισμού (HC).

Η λειτουργία υψηλής ταυτόχρονης εκτέλεσης (HC) επιτρέπει στις συνδέσεις ODBC στον ίδιο χώρο εργασίας και lakehouse να συνδέονται σε κοινόχρηστες, θερμές περιόδους λειτουργίας Livy Spark από την πλευρά του διακομιστή αντί να παρέχουν ξεχωριστό σύμπλεγμα για κάθε σύνδεση. Χρησιμοποιήστε το για φόρτους εργασίας, όπως πίνακες εργαλείων BI, πυρήνες σημειωματαρίων και ανεμιστήρα ETL που ανοίγουν πολλές συνδέσεις μικρής διάρκειας και μπορούν να κάνουν κοινή χρήση χωρητικότητας Spark διαχειριζόμενη από διακομιστή.

Η λειτουργία HC είναι προαιρετική. Εάν δεν ρυθμίσετε τις παραμέτρους μιας ρύθμισης HC, το πρόγραμμα οδήγησης χρησιμοποιεί την κλασική διαδρομή μίας περιόδου λειτουργίας.

Επιλογή λειτουργίας σύνδεσης

Χρησιμοποιήστε τη λειτουργία HC όταν:

  • Ο φόρτος εργασίας σας ανοίγει πολλές βραχύβιες συνδέσεις ODBC, όπως πίνακες εργαλείων BI, πυρήνες σημειωματαρίων ή ανεμιστήρα ETL.
  • Οι συνδέσεις στοχεύουν τον ίδιο χώρο εργασίας και lakehouse και μπορούν να κάνουν κοινή χρήση μιας περιόδου λειτουργίας Spark που διαχειρίζεται ο διακομιστής.
  • Η μείωση της καθυστέρησης ψυχρής εκκίνησης ανά σύνδεση είναι σημαντική.

Χρησιμοποιήστε την κλασική λειτουργία όταν:

  • Κάθε σύνδεση απαιτεί μια απομονωμένη περίοδο λειτουργίας Spark λόγω διαφορετικών ρυθμίσεων παραμέτρων Spark ή αυστηρής απομόνωσης πόρων.
  • Το τελικό σημείο Fabric Livy για τον χώρο εργασίας προορισμού και το lakehouse δεν υποστηρίζει τη λειτουργία HC.

Ενεργοποίηση λειτουργίας υψηλής ταυτόχρονης λειτουργίας

Προσθέστε μια παράμετρο λειτουργίας υψηλής ταυτόχρονης εκτέλεσης στο DSN ή στο συμβολοσειρά σύνδεσης.

Συνιστάται: Σετ LivyMode

Χρησιμοποιήστε το LivyMode για να επιλέξετε ρητά τον τρόπο απόκτησης συνεδρίας:

LivyMode=HighConcurrency

Οι υποστηριζόμενες τιμές είναι Classic, HighConcurrencyκαι Auto. Οι τιμές δεν κάνουν διάκριση πεζών-κεφαλαίων. Auto Αυτήν τη στιγμή επιλέγει την κλασική λειτουργία.

Εναλλακτική: Σετ UseHighConcurrency

Χρησιμοποιήστε τη δυαδική ρύθμιση για συμβατότητα με υπάρχουσες διαμορφώσεις:

UseHighConcurrency=true

Για να ενεργοποιήσετε τη λειτουργία υψηλής ταυτόχρονης εκτέλεσης, χρησιμοποιήστε true, 1, yesή on. Για να το απενεργοποιήσετε, χρησιμοποιήστε falseτα , 0, no, ή off. Οι τιμές δεν κάνουν διάκριση πεζών-κεφαλαίων. SQLDriverConnect απορρίπτει άλλες μη κενές τιμές με το SQLSTATE HY024. Μόνο SQLConnect DSN καταγράφει την αποτυχία επικύρωσης και χρησιμοποιεί την κλασική λειτουργία.

Σημείωμα

Εάν ορίσετε και τις δύο παραμέτρους, το έχει LivyMode προτεραιότητα έναντι του UseHighConcurrency.

Απαιτούμενες παράμετροι σε λειτουργία HC

Η ενεργοποίηση HC απαιτεί τα ακόλουθα έγκυρα αναγνωριστικά:

Παράμετρος Σημειώσεις
WorkspaceId Πρέπει να είναι έγκυρο GUID χώρου εργασίας Fabric.
LakehouseId Πρέπει να είναι έγκυρο GUID Fabric lakehouse.

Συμπεριλάβετε SessionTag επειδή επηρεάζει την αντιστοίχιση από την πλευρά του διακομιστή για θερμές συνεδρίες.

Αντιστοίχιση συνεδρίας

Η λειτουργία HC δεν εγγυάται ότι κάθε σύνδεση επαναχρησιμοποιεί μια υπάρχουσα περίοδο λειτουργίας. Για κάθε αίτημα απόκτησης συνεδρίας, ο οδηγός αποστέλλει:

  • Η SessionTag αξία.
  • Η αποτελεσματική διαμόρφωση του Spark, συμπεριλαμβανομένων των conf.* ρυθμίσεων και EnvironmentIdτων αρχείων .

Η υπηρεσία Fabric Livy αξιολογεί αυτές τις τιμές και αποφασίζει εάν θα συνδέσει τη σύνδεση σε μια θερμή συνεδρία ή θα δημιουργήσει μια νέα συνεδρία. Για να βελτιώσετε την επαναχρησιμοποίηση περιόδων λειτουργίας, χρησιμοποιήστε συνεπείς τιμές σε όλες τις συνδέσεις που προορίζονται για κοινή χρήση χωρητικότητας Spark διαχειριζόμενη από διακομιστή.

Παράδειγμα συμβολοσειρών σύνδεσης

Ελάχιστη σύνδεση HC (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 με συντονισμένα τάιμ άουτ:

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 με περιβάλλον και το Spark conf παρακάμπτει:

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 σε DSN

Μπορείτε να αποθηκεύσετε τις ρυθμίσεις HC σε ένα DSN αντί να τις επαναλαμβάνετε σε κάθε συμβολοσειρά σύνδεσης. Όταν μια συμβολοσειρά σύνδεσης δεν καθορίζει μια τιμή, το πρόγραμμα οδήγησης διαβάζει αυτές τις ρυθμίσεις από το DSN:

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

Το πρόγραμμα οδήγησης διαβάζει επίσης τη συμβατότητα μόνο TenantPrincipal και PoolMax τις ρυθμίσεις. Για να αποθηκεύσετε αυτές τις ρυθμίσεις, επεξεργαστείτε το DSN στο odbcad32.exe ή χρησιμοποιήστε SQLWritePrivateProfileStringτο . Χρησιμοποιήστε τα ονόματα παραμέτρων στον πίνακα ρυθμίσεων HC.

Σημαντικό

Το πρόγραμμα οδήγησης δεν διαβάζει conf.* τις παρακάμψεις ρύθμισης παραμέτρων Spark από το DSN. Προσθέστε τα στο συμβολοσειρά σύνδεσης κατά το χρόνο εκτέλεσης ή εισάγετε τα πριν καλέσετε SQLDriverConnect.

Απενεργοποιήστε τη λειτουργία HC

Μπορείτε να απενεργοποιήσετε τη λήψη νέων περιόδων λειτουργίας HC χωρίς να αναπτύξετε ξανά το πρόγραμμα οδήγησης. Χρησιμοποιήστε τη μέθοδο που αντιστοιχεί στον τρόπο με τον οποίο ενεργοποιήσατε τη λειτουργία HC:

Πηγή διαμόρφωσης HC Πώς να απενεργοποιήσετε τη λειτουργία HC
Μόνο μεταβλητή περιβάλλοντος Ορίστε FABRIC_ODBC_USE_HC=falseή καταργήστε τη μεταβλητή.
ΔΣΝ Σετ LivyMode=Classic. Εναλλακτικά, αφαιρέστε LivyMode και ρυθμίστε το UseHighConcurrency=false.
Συμβολοσειρά σύνδεσης Ορίστε LivyMode=Classicή καταργήστε τις παραμέτρους HC.

Οι ρυθμίσεις συμβολοσειράς σύνδεσης και DSN έχουν προτεραιότητα έναντι της εναλλακτικής μεταβλητής περιβάλλοντος. Αυτές οι αλλαγές επηρεάζουν μόνο τις νέες συνδέσεις. Οι υπάρχουσες συνεδρίες HC συνεχίζονται μέχρι να κυκλοφορήσουν.

Κατανόηση της συμπεριφοράς χρόνου εκτέλεσης HC

  • Επικύρωση:SQLDriverConnect απορρίπτει μη έγκυρες τιμές HC Boolean και θετικούς-ακέραιους αριθμούς με SQLSTATE HY024. Απορρίπτει ένα μη έγκυρο LivyMode και μη έγκυρο ή υπερμεγέθη WorkspaceId, LakehouseIdκαι IdempotencyKey τιμές με SQLSTATE HY000. Μια υπερμεγέθης τιμή συμβατότητας TenantPrincipal επιστρέφει HY000επίσης . Για μόνο SQLConnectDSN , το πρόγραμμα οδήγησης καταγράφει τις συνήθεις αποτυχίες επικύρωσης HC και χρησιμοποιεί την κλασική λειτουργία. Οι υπερμεγέθεις τιμές που είναι ευαίσθητες στην ασφάλεια εξακολουθούν να αποτυγχάνουν στη σύνδεση.
  • Ευαίσθητα δεδομένα: Το πρόγραμμα οδήγησης εξαιρεί ή καθαρίζει IdempotencyKey και άλλα ευαίσθητα πεδία από τα αρχεία καταγραφής HC και την έξοδο διαγνωστικών ελέγχων.
  • Ακύρωση: Η ακύρωση της δήλωσης είναι συνεργατική. Οι εργασίες διακομιστή που βρίσκονται ήδη σε εξέλιξη ολοκληρώνονται καθαρά αντί να τερματίζονται αμέσως.
  • Διακόπτες κυκλώματος: Οι λειτουργίες HC και classic χρησιμοποιούν ξεχωριστούς διακόπτες κυκλώματος. Η εξάντληση της μιας λειτουργίας δεν επηρεάζει την άλλη.
  • Αρχική βάση δεδομένων: Οι συνδέσεις HC δεν εκτελούν την αρχική USE πρόταση για την Database παράμετρο. Εκτελέστε USE <database> μετά τη σύνδεση ή χρησιμοποιήστε πλήρως προσδιορισμένα ονόματα πινάκων.
  • Διαγνωστικός έλεγχος: Ρύθμιση LogLevel=DEBUG για καταγραφή αποφάσεων απόκτησης, ανίχνευσης, έκδοσης και αντιστοίχισης σφαλμάτων HC. Για εστιασμένη αντιμετώπιση προβλημάτων, ρυθμίστε LIVY_HC_VERBOSE=1 ώστε να περιλαμβάνει επιπλέον καθαρισμένα διαγνωστικά HC HTTP.

Ρύθμιση παραμέτρων DSN

Δημιουργία DSN συστήματος

  1. Ανοίξτε το ODBC Administrator

    %SystemRoot%\System32\odbcad32.exe
    
  2. Δημιουργία νέου DSN συστήματος

    • Μεταβείτε στην καρτέλα "DSN συστήματος".
    • Επιλέξτε "Προσθήκη"
    • Επιλέξτε "Πρόγραμμα οδήγησης Microsoft ODBC για Microsoft Fabric Data Engineering"
    • Επιλέξτε "Τέλος"
  3. Διαμόρφωση ρυθμίσεων DSN

    • Όνομα πηγής δεδομένων: Εισαγάγετε ένα μοναδικό όνομα (π.χ. FabricODBC)
    • Περιγραφή: Προαιρετική περιγραφή
    • Αναγνωριστικό χώρου εργασίας: Το GUID του χώρου εργασίας Fabric
    • Αναγνωριστικό Lakehouse: Το GUID του Fabric lakehouse
    • Έλεγχος ταυτότητας: Επιλέξτε μέθοδο ελέγχου ταυτότητας
    • Αναγνωριστικό περιβάλλοντος (προαιρετικό): Εισαγάγετε το GUID του στοιχείου περιβάλλοντος Fabric που θα επισυνάψετε κατά τη δημιουργία της συνεδρίας
    • Λειτουργία Livy (προαιρετικό): Ρυθμίστε σε HighConcurrency για να ενεργοποιήσετε τη λειτουργία HC
    • Ετικέτα περιόδου σύνδεσης (προαιρετικά): Καταχωρίστε μια μη ευαίσθητη ετικέτα λειτουργίας για αντιστοίχιση περιόδων σύνδεσης HC
    • Διαμορφώστε πρόσθετες ρυθμίσεις όπως απαιτείται
  4. Δοκιμαστική σύνδεση

    • Επιλέξτε "Δοκιμή σύνδεσης" για να επαληθεύσετε τις ρυθμίσεις
    • Επιλέξτε "OK" για αποθήκευση

Χρήση DSN σε εφαρμογές

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

Παραδείγματα χρήσης

Βασική σύνδεση και ερώτημα

Πύθωνας

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

Εργασία με μεγάλα σύνολα αποτελεσμάτων

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

Εκτέλεση δηλώσεων DML

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

Χρήση executeDml με INSERT, UPDATE, ή DELETE δηλώσεις. Το αναφερόμενο πλήθος γραμμών εξαρτάται από το εάν το αποτέλεσμα περιέχει πλήθος ενημερώσεων που αναγνωρίζεται από το πρόγραμμα οδήγησης.

Ανακάλυψη σχήματος

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

Αντιστοίχιση τύπου δεδομένων

Το πρόγραμμα οδήγησης αντιστοιχίζει τους τύπους δεδομένων Spark SQL σε τύπους ODBC SQL:

Τύπος SQL Spark Τύπος SQL ODBC Τύπος C/C++ Τύπος Python Τύπος .NET
ΔΥΑΔΙΚΉ ΤΙΜΉ SQL_BIT SQLCHAR bool bool
BYTE SQL_TINYINT SQLSCHAR int sbyte
ΜΙΚΡΟΣ SQL_SMALLINT SQLSMALLINT int κοντός
INT SQL_INTEGER SQLINTEGER int int
ΜΑΚΡΎΣ SQL_BIGINT SQLBIGINT int long
ΕΠΙΠΛΈΩ SQL_REAL SQLREAL float float
ΔΙΠΛΌΣ SQL_DOUBLE SQLΔΙΠΛΌ float double
ΔΕΚΑΔΙΚΌΣ SQL_DECIMAL SQLCHAR* δεκαδικός. Δεκαδικός decimal
ΣΕΙΡΆ SQL_VARCHAR SQLCHAR* str string
ΒΑΡΤΣΑΡ(ν) SQL_VARCHAR SQLCHAR* str string
CHAR(n) SQL_CHAR SQLCHAR* str string
ΔΥΑΔΙΚΌΣ SQL_VARBINARY SQLCHAR* byte byte[]
ΗΜΕΡΟΜΗΝΊΑ SQL_TYPE_DATE SQL_DATE_STRUCT ημερομηνία/ώρα.ημερομηνία Ημερομηνία/ώρα
ΧΡΟΝΙΚΉ ΣΉΜΑΝΣΗ SQL_TYPE_TIMESTAMP SQL_TIMESTAMP_STRUCT ημερομηνία/ώρα.ημερομηνία/ώρα Ημερομηνία/ώρα
ΠΑΡΆΤΑΞΗ SQL_VARCHAR SQLCHAR* str (JSON) string
ΧΆΡΤΗΣ SQL_VARCHAR SQLCHAR* str (JSON) string
ΔΟΜΗ SQL_VARCHAR SQLCHAR* str (JSON) string

Ενσωμάτωση εργαλείου BI

Microsoft Excel

  1. Ανοίξτε το Excel -> Δεδομένα -> Λήψη δεδομένων -> Από άλλες πηγές -> Από ODBC
  2. Επιλέξτε το DSN που έχετε ρυθμίσει (π.χ. FabricODBC)
  3. Έλεγχος ταυτότητας εάν σας ζητηθεί
  4. Αναζήτηση και επιλογή πινάκων
  5. Φόρτωση δεδομένων σε φύλλο εργασίας του Excel

Power BI Desktop

  1. Άνοιγμα του Power BI Desktop -> Λήψη δεδομένων -> ODBC
  2. Επιλέξτε το DSN που έχετε διαμορφώσει
  3. Περιήγηση στον κατάλογο δεδομένων και επιλογή πινάκων
  4. Μετασχηματισμός δεδομένων ανάλογα με τις ανάγκες
  5. Δημιουργία απεικονίσεων

SQL Server Management Studio (Συνδεδεμένος διακομιστής)

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

Αντιμετώπιση προβλημάτων

Αυτή η ενότητα παρέχει οδηγίες για την επίλυση συνηθισμένων προβλημάτων που ενδέχεται να αντιμετωπίσετε κατά τη χρήση του προγράμματος οδήγησης ODBC της Microsoft για το Microsoft Fabric Data Engineering.

Συνήθη ζητήματα

Οι ακόλουθες ενότητες περιγράφουν κοινά προβλήματα και τις λύσεις τους:

Αποτυχίες σύνδεσης

Πρόβλημα: Δεν είναι δυνατή η σύνδεση στο Fabric

Λύσεις:

  1. Επαληθεύστε ότι το αναγνωριστικό χώρου εργασίας και το αναγνωριστικό lakehouse είναι σωστά GUID
  2. Ελέγξτε τον έλεγχο ταυτότητας Azure CLI: az account show
  3. Βεβαιωθείτε ότι έχετε τα κατάλληλα δικαιώματα χώρου εργασίας Fabric
  4. Ελέγξτε τη συνδεσιμότητα δικτύου και τις ρυθμίσεις διακομιστή μεσολάβησης

Σφάλματα ελέγχου ταυτότητας

Πρόβλημα: Ο έλεγχος ταυτότητας αποτυγχάνει με το Azure CLI

Λύσεις:

  • Εκτέλεση az login για ανανέωση διαπιστευτηρίων
  • Επαλήθευση σωστού μισθωτή: az account set --subscription <subscription-id>
  • Ελέγξτε την εγκυρότητα του διακριτικού: az account get-access-token --resource https://api.fabric.microsoft.com

Λήξη χρονικού ορίου ερωτήματος

Πρόβλημα: Λήξη χρονικού ορίου ερωτημάτων σε μεγάλους πίνακες

Λύσεις:

  • Ενεργοποίηση LargeTableSupport=true
  • Προσαρμόστε PageSizeBytes για βέλτιστο μέγεθος κομματιού
  • Ενεργοποίηση ασύγχρονης προφόρτωσης: EnableAsyncPrefetch=1
  • Χρήση LIMIT όρου για τον περιορισμό του μεγέθους του αποτελέσματος

Ενεργοποίηση καταγραφής

Κατά την αντιμετώπιση προβλημάτων, η ενεργοποίηση της λεπτομερούς καταγραφής μπορεί να σας βοηθήσει να εντοπίσετε τη βασική αιτία των προβλημάτων. Μπορείτε να ενεργοποιήσετε την καταγραφή μέσω της συμβολοσειράς σύνδεσης.

Για να ενεργοποιήσετε τη λεπτομερή καταγραφή:

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

Επίπεδα καταγραφής:

  • DEBUG: Λεπτομερείς πληροφορίες εντοπισμού σφαλμάτων και το πιο αναλυτικό επίπεδο καταγραφής προγραμμάτων οδήγησης
  • INFO: Γενικές πληροφορίες (προεπιλογή)
  • WARN: Μόνο προειδοποιήσεις
  • ERROR: Μόνο σφάλματα

Ανίχνευση ODBC

Για διαγνωστικά χαμηλού επιπέδου, μπορείτε να ενεργοποιήσετε την ανίχνευση ODBC των Windows για την καταγραφή λεπτομερών κλήσεων API ODBC και συμπεριφοράς προγραμμάτων οδήγησης. Θυμηθείτε να απενεργοποιείτε την ανίχνευση όταν δεν χρειάζεται για να διατηρήσετε τη βέλτιστη απόδοση.

Για να ενεργοποιήσετε την ανίχνευση ODBC:

  1. Άνοιγμα odbcad32.exe
  2. Μεταβείτε στην καρτέλα "Ανίχνευση".
  3. Ορίστε τη διαδρομή του αρχείου ιχνηλασίας (π.χ. C:\temp\odbctrace.log)
  4. Επιλέξτε "Έναρξη ανίχνευσης τώρα"
  5. Αναπαραγάγετε το πρόβλημα
  6. Επιλέξτε "Διακοπή ανίχνευσης τώρα"