ไดรเวอร์ Microsoft ODBC สําหรับ Microsoft Fabric Data Engineering บน Linux (ตัวอย่าง)

สำคัญ

คุณลักษณะนี้อยู่ใน แสดงตัวอย่าง

ODBC (Open Database Connectivity) เป็นมาตรฐานที่นํามาใช้อย่างแพร่หลาย ซึ่งช่วยให้แอปพลิเคชันไคลเอ็นต์สามารถเชื่อมต่อและทํางานกับข้อมูลจากฐานข้อมูลและแพลตฟอร์มข้อมูลขนาดใหญ่ได้

Microsoft ODBC Driver for Fabric Data Engineering ช่วยให้คุณเชื่อมต่อ สืบค้น และจัดการงาน Spark ใน Fabric ด้วยความน่าเชื่อถือและความเรียบง่ายของมาตรฐาน ODBC ไดรเวอร์นี้สร้างขึ้นบน Fabric Livy APIs ซึ่งให้การเชื่อมต่อ Spark SQL ที่ปลอดภัยและยืดหยุ่นกับแอปพลิเคชัน C/C++, .NET, Python และแอปพลิเคชันที่รองรับ ODBC อื่น ๆ บน Linux

คุณลักษณะสำคัญ

  • เป็นไปตามมาตรฐาน ODBC 3.x: การใช้งานเต็มรูปแบบของข้อกําหนด ODBC 3.x
  • การตรวจสอบสิทธิ์ Microsoft Entra ID: มีหลายขั้นตอนการตรวจสอบสิทธิ์ รวมถึง Azure CLI, ข้อมูลรับรองลูกค้า, การรับรองแบบใบรับรอง และการตรวจสอบสิทธิ์โทเค็นการเข้าถึง
  • รองรับการสืบค้น Spark SQL: รันคําสั่ง Spark SQL โดยตรง
  • รองรับชนิดข้อมูลอย่างครบถ้วน: รองรับชนิดข้อมูล SQL ของ Spark ทุกประเภท รวมถึงชนิดข้อมูลที่ซับซ้อน (ARRAY, MAP, และ STRUCT)
  • การนําเซสชันกลับมาใช้ใหม่: มีการจัดการเซสชันในตัวเพื่อเพิ่มประสิทธิภาพ
  • รองรับตารางขนาดใหญ่: การจัดการที่เหมาะสมสําหรับชุดผลลัพธ์ขนาดใหญ่พร้อมขนาดหน้าที่ปรับแต่งได้
  • Prefetch แบบไม่ซิงค์: โหลดข้อมูลเบื้องหลังเพื่อเพิ่มประสิทธิภาพ
  • รองรับพร็อกซี: การกําหนดค่าพร็อกซี HTTP สําหรับสภาพแวดล้อมองค์กร
  • รองรับบ้านพักริมทะเลสาบแบบหลายสคีมา: เชื่อมต่อกับสคีมาเฉพาะภายในบ้านพักริมทะเลสาบ

หมายเหตุ

ใน Apache Spark แบบโอเพ่นซอร์ส ฐานข้อมูลและสคีมาจะถูกใช้เหมือนกัน ตัวอย่างเช่น การรันSHOW SCHEMASหรือSHOW DATABASESในสมุดบันทึก Fabric จะได้ผลลัพธ์เดียวกัน: รายการสคีมาทั้งหมดในบ้านพักริมทะเลสาบ

ข้อกำหนดเบื้องต้น

ก่อนที่คุณจะใช้ไดรเวอร์ Microsoft ODBC สําหรับ Microsoft Fabric Data Engineering บน Linux โปรดตรวจสอบให้แน่ใจว่าคุณมีข้อกําหนดเบื้องต้นดังต่อไปนี้:

  • ระบบปฏิบัติการ: Ubuntu 22.04 หรือใหม่กว่า, Debian 11 หรือใหม่กว่า หรือ Red Hat Enterprise Linux (RHEL) 8 หรือใหม่กว่าบน x86-64
  • unixODBC: โปรแกรมจัดการไดรเวอร์ ODBC สําหรับ Linux ติดตั้งunixodbcแพ็กเกจและunixodbc-dev
  • การเข้าถึง Fabric: การเข้าถึงพื้นที่ทํางาน Fabric
  • ข้อมูลรับรอง Microsoft Entra IDV: ข้อมูลรับรองที่เหมาะสมสําหรับการตรวจสอบสิทธิ์
  • รหัสพื้นที่ทํางานและบ้านพักริมทะเลสาบ: ตัวระบุ GUID สําหรับพื้นที่ทํางาน Fabric และบ้านพักริมทะเลสาบของคุณ
  • Azure CLI (ไม่บังคับ): จําเป็นเมื่อใช้การตรวจสอบสิทธิ์ Azure CLI

ดาวน์โหลดและติดตั้งบน Linux

Microsoft ODBC Driver for Microsoft Fabric Data Engineering เวอร์ชัน 1.0.0 มีให้ใช้งานแบบสาธารณะ

วิธีติดตั้งไดรเวอร์:

  1. สกัด ms-sparksql-odbc-linux-1.0.0.zip.

  2. เปิดเทอร์มินัลในไดเรกทอรีที่แตกออกมา

  3. ติดตั้งแพ็กเกจ Debian:

    sudo dpkg -i microsoft-fabric-odbc-driver-1.0.0-Linux.deb
    

แพ็กเกจนี้จะติดตั้งไฟล์ดังต่อไปนี้:

ไฟล์ สถานที่ติดตั้ง
ไลบรารีไดรเวอร์ /usr/lib/libmicrosoftfabricodbc.so
เทมเพลตลงทะเบียนผู้ขับขี่ /usr/share/microsoft-fabric-odbc-driver/odbcinst.ini.template
เทมเพลตการกําหนดค่า DSN /usr/share/microsoft-fabric-odbc-driver/odbc.ini.template
ใบอนุญาต /usr/share/doc/microsoft-fabric-odbc-driver/LICENSE
คู่มือการใช้งาน /usr/share/doc/microsoft-fabric-odbc-driver/USAGE_Linux.md

ลงทะเบียนคนขับด้วยตนเอง

แพ็กเกจจะลงทะเบียนไดรเวอร์กับ unixODBC โดยอัตโนมัติ หากต้องการลงทะเบียนไดรเวอร์ด้วยตนเอง ให้รัน:

sudo odbcinst -i -d -f /usr/share/microsoft-fabric-odbc-driver/odbcinst.ini.template

ตรวจสอบการติดตั้ง

ตรวจสอบว่าไดรเวอร์ถูกลงทะเบียนและติดตั้งไลบรารีแล้ว:

odbcinst -q -d
ls -la /usr/lib/libmicrosoftfabricodbc.so

คําสั่งควร odbcinst แสดงรายการ [Microsoft ODBC Driver for Microsoft Fabric Data Engineering].

ถอนการติดตั้งไดรเวอร์

หากต้องการถอนการติดตั้งไดรเวอร์ ให้รันคําสั่งต่อไปนี้:

sudo dpkg -r microsoft-fabric-odbc-driver

คําสั่งนี้จะลบไฟล์ไดรเวอร์และยกเลิกการลงทะเบียนไดรเวอร์จาก unixODBC

ตัวอย่างการเริ่มต้นอย่างรวดเร็ว

ตัวอย่างต่อไปนี้เชื่อมต่อกับ Fabric และรันคําสั่ง Spark SQL query ทําข้อกําหนดเบื้องต้นให้ครบและติดตั้งไดรเวอร์ก่อนที่คุณจะรันตัวอย่าง

ตัวอย่าง Python

import pyodbc

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

conn = pyodbc.connect(connection_string, timeout=30)
cursor = conn.cursor()

cursor.execute("SELECT 'Hello from Fabric!' AS message")
row = cursor.fetchone()
print(row.message)

conn.close()

ตัวอย่าง C/C++

#include <sql.h>
#include <sqlext.h>
#include <iostream>

int main() {
    SQLHENV henv = SQL_NULL_HENV;
    SQLHDBC hdbc = SQL_NULL_HDBC;
    SQLHSTMT hstmt = SQL_NULL_HSTMT;

    SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
    SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0);
    SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);

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

    SQLRETURN result = SQLDriverConnect(
        hdbc,
        NULL,
        (SQLCHAR*)connectionString,
        SQL_NTS,
        NULL,
        0,
        NULL,
        SQL_DRIVER_NOPROMPT);

    if (SQL_SUCCEEDED(result)) {
        std::cout << "Connected successfully!" << std::endl;

        SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
        result = SQLExecDirect(
            hstmt,
            (SQLCHAR*)"SELECT 'Hello from Fabric!' AS message",
            SQL_NTS);

        if (SQL_SUCCEEDED(result)) {
            char message[256];
            SQLLEN indicator;

            while (SQLFetch(hstmt) == SQL_SUCCESS) {
                SQLGetData(
                    hstmt,
                    1,
                    SQL_C_CHAR,
                    message,
                    sizeof(message),
                    &indicator);
                std::cout << message << std::endl;
            }
        }

        SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
        SQLDisconnect(hdbc);
    }

    SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
    SQLFreeHandle(SQL_HANDLE_ENV, henv);
    return 0;
}

สร้างและรันตัวอย่าง:

g++ -o fabric_test fabric_test.cpp -lodbc -std=c++17
./fabric_test

ตัวอย่าง .NET

using System.Data.Odbc;

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

using var connection = new OdbcConnection(connectionString);
await connection.OpenAsync();

Console.WriteLine("Connected successfully!");

using var command = new OdbcCommand(
    "SELECT 'Hello from Fabric!' AS message",
    connection);
using var reader = await command.ExecuteReaderAsync();

if (await reader.ReadAsync())
{
    Console.WriteLine(reader.GetString(0));
}

รูปแบบสตริงการเชื่อมต่อ

สตริงการเชื่อมต่อพื้นฐาน

ใช้รูปแบบ สายอักขระการเชื่อมต่อ ดังนี้:

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

ส่วนประกอบสตริงการเชื่อมต่อ

ส่วนประกอบ คำอธิบาย ตัวอย่าง
DRIVER ตัวระบุโปรแกรมควบคุม ODBC {Microsoft ODBC Driver for Microsoft Fabric Data Engineering}
WorkspaceId ตัวระบุพื้นที่ทํางาน Fabric (GUID) 4bbf89a8-66bb-443f-91af-df31e6a7560b
LakehouseId รหัสบ้านพักริมทะเลสาบ Fabric (GUID) d8faa650-1343-496b-b9cc-d4168a676f90
AuthFlow วิธีการรับรองความถูกต้อง AZURE_CLI, , CLIENT_CREDENTIALCLIENT_CERTIFICATEหรือACCESS_TOKEN

ตัวอย่างสตริงการเชื่อมต่อ

การเชื่อมต่อพื้นฐาน

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=/tmp/odbc_driver.log

การรับรองความถูกต้อง

Microsoft ODBC Driver for Microsoft Fabric Data Engineering รองรับวิธีการตรวจสอบสิทธิ์หลายแบบผ่าน Microsoft Entra ID กําหนดค่าการตรวจสอบสิทธิ์โดยใช้พารามิเตอร์ใน AuthFlow สายอักขระการเชื่อมต่อ หรือ DSN

วิธีการรับรองความถูกต้อง

ค่า AuthFlow คำอธิบาย
AZURE_CLI การพัฒนาโดยใช้ข้อมูลประจําตัว Azure CLI
CLIENT_CREDENTIAL Service principal ที่มี client secret
CLIENT_CERTIFICATE Service principal ที่มีใบรับรอง
ACCESS_TOKEN โทเค็นการเข้าถึงผู้ถือที่ได้มาล่วงหน้า

หมายเหตุ

การตรวจสอบสิทธิ์เบราว์เซอร์แบบโต้ตอบไม่สามารถใช้งานได้บนเซิร์ฟเวอร์ Linux แบบ headless ใช้ Azure CLI, ข้อมูลรับรองลูกค้า, ใบรับรอง หรือการตรวจสอบสิทธิ์โทเค็นแทน

การรับรองความถูกต้องของ Azure CLI

ใช้การตรวจสอบสิทธิ์ Azure CLI สําหรับการพัฒนาและแอปพลิเคชันแบบโต้ตอบ

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

ในการติดตั้ง Azure CLI บน Debian หรือ Ubuntu ให้ใช้ตัวจัดการแพ็กเกจ:

sudo apt-get update
sudo apt-get install -y azure-cli

การตรวจสอบสิทธิ์ข้อมูลรับรองลูกค้า

ใช้การตรวจสอบสิทธิ์ลูกค้าสําหรับบริการอัตโนมัติและงานเบื้องหลัง

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: รหัสผู้เช่า Microsoft Entra
  • ClientId: รหัสแอปพลิเคชัน (ไคลเอนต์)
  • ClientSecret: ความลับของลูกค้า

เก็บความลับไว้ในที่เก็บข้อมูลลับที่ปลอดภัยหรือตัวแปรสภาพแวดล้อม อย่าเก็บความลับไว้ในสตริงการเชื่อมต่อแบบข้อความธรรมดาหรือไฟล์ INI

การรับรองความถูกต้องตามใบรับรอง

ใช้การตรวจสอบสิทธิ์แบบใช้ใบรับรองสําหรับแอปพลิเคชันองค์กรที่ต้องการข้อมูลรับรองใบรับรอง

connection_string = (
    "DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
    "WorkspaceId=<workspace-id>;"
    "LakehouseId=<lakehouse-id>;"
    "AuthFlow=CLIENT_CERTIFICATE;"
    "TenantId=<tenant-id>;"
    "ClientId=<client-id>;"
    "CertificatePath=/path/to/cert.pfx;"
    "CertificatePassword=<password>;"
)

ระบุพารามิเตอร์ดังต่อไปนี้:

  • TenantId: รหัสผู้เช่า Microsoft Entra
  • ClientId: รหัสแอปพลิเคชัน (ไคลเอนต์)
  • CertificatePath: เส้นทางไปยังไฟล์ใบรับรอง PFX หรือ PKCS12
  • CertificatePassword: รหัสผ่านใบรับรอง

การรับรองความถูกต้องของโทเค็นการเข้าถึง

ใช้การตรวจสอบสิทธิ์โทเค็นการเข้าถึงเมื่อแอปพลิเคชันของคุณได้รับโทเค็นผ่านกลไกอื่น

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

พารามิเตอร์การกําหนดค่า

พารามิเตอร์ที่ต้องการ

รวมพารามิเตอร์เหล่านี้ในทุก สายอักขระการเชื่อมต่อ:

พารามิเตอร์ ชนิด คำอธิบาย ตัวอย่าง
WorkspaceId ยูอี ตัวระบุพื้นที่ทํางานของ Fabric 4bbf89a8-...
LakehouseId ยูอี รหัสบ้านพักริมทะเลสาบ Fabric d8faa650-...
AuthFlow String ชนิดโฟลว์การรับรองความถูกต้อง AZURE_CLI

พารามิเตอร์เพิ่มเติม

การตั้งค่าการเชื่อมต่อ

พารามิเตอร์ ชนิด ค่าเริ่มต้น คำอธิบาย
Database String ไม่มี ฐานข้อมูลเฉพาะเพื่อเชื่อมต่อ
Scope String https://api.fabric.microsoft.com/.default ขอบเขต OAuth

การตั้งค่าประสิทธิภาพ

พารามิเตอร์ ชนิด ค่าเริ่มต้น คำอธิบาย
ReuseSession แบบบูลีน true นําเซสชัน Spark ที่มีอยู่กลับมาใช้ใหม่
LargeTableSupport แบบบูลีน false เปิดใช้งานการเพิ่มประสิทธิภาพสําหรับชุดผลลัพธ์ขนาดใหญ่
EnableAsyncPrefetch แบบบูลีน false เปิดใช้งานการดึงข้อมูลพื้นหลังล่วงหน้า
PageSizeBytes เลขจำนวนเต็ม 18874368 (18 MB) ขนาดหน้าสําหรับการจัดหน้าผลลัพธ์ตั้งแต่ 1 ถึง 18 MB

การตั้งค่าการบันทึก

พารามิเตอร์ ชนิด ค่าเริ่มต้น คำอธิบาย
LogLevel String INFO ระดับลอการิทึม: TRACE, DEBUG, INFO, WARN, หรือ ERROR
LogFile String odbc_driver.log เส้นทางไฟล์ล็อกแบบสัมบูรณ์หรือสัมพัทธ์

การตั้งค่าพร็อกซี

พารามิเตอร์ ชนิด ค่าเริ่มต้น คำอธิบาย
UseProxy แบบบูลีน false เปิดใช้งานพร็อกซี
ProxyHost String ไม่มี ชื่อโฮสต์พร็อกซี
ProxyPort เลขจำนวนเต็ม ไม่มี พอร์ตพร็อกซี
ProxyUsername String ไม่มี ชื่อผู้ใช้การตรวจสอบสิทธิ์ด้วยพร็อกซี
ProxyPassword String ไม่มี รหัสผ่านการรับรองความถูกต้องของพร็อกซี

การกําหนดค่า DSN

บน Linux ให้กําหนดค่าชื่อแหล่งข้อมูล (DSNs) ในไฟล์ INI แทนรีจิสทรีของ Windows

ไฟล์ ขอบเขต Access
/etc/odbc.ini DSN ทั่วทั้งระบบ ต้อง sudo
~/.odbc.ini DSN เฉพาะสําหรับผู้ใช้ เฉพาะผู้ใช้ปัจจุบัน

สร้าง DSN

คัดลอกเทมเพลตที่ติดตั้งไว้:

cp /usr/share/microsoft-fabric-odbc-driver/odbc.ini.template ~/.odbc.ini

แก้ไข~/.odbc.iniด้วยรายละเอียดพื้นที่ทํางาน Fabric ของคุณ:

[FabricDSN]
Description    = Microsoft Fabric Data Engineering
Driver         = Microsoft ODBC Driver for Microsoft Fabric Data Engineering
WorkspaceId    = <workspace-id>
LakehouseId    = <lakehouse-id>
AuthFlow       = AZURE_CLI
LogLevel       = INFO
# LogFile      = /tmp/fabric_odbc.log
# LargeTableSupport = true
# ReuseSession = true

ตรวจสอบ DSN

แสดงรายการ DSN ที่กําหนดค่าไว้ แล้วทดสอบการเชื่อมต่อ:

odbcinst -q -s
isql -v FabricDSN

คําสั่งนี้ isql ต้องใช้เครื่องมือบรรทัดคําสั่ง unixODBC

ใช้ DSN ในแอปพลิเคชัน

conn = pyodbc.connect("DSN=FabricDSN")
using var connection = new OdbcConnection("DSN=FabricDSN");
await connection.OpenAsync();
SQLRETURN result = SQLConnect(
    hdbc,
    (SQLCHAR*)"FabricDSN",
    SQL_NTS,
    NULL,
    0,
    NULL,
    0);

ตัวอย่างการใช้

ทดสอบการเชื่อมต่อด้วย isql

เริ่มเซสชัน SQL แบบโต้ตอบ:

isql -v FabricDSN

รันคําสั่งค้นหาเพียงครั้งเดียว:

echo "SELECT 1 AS test" | isql -v FabricDSN -b

ทํางานกับชุดผลลัพธ์ขนาดใหญ่

import pyodbc

connection_string = (
    "DRIVER={Microsoft ODBC Driver for Microsoft Fabric Data Engineering};"
    "WorkspaceId=<workspace-id>;"
    "LakehouseId=<lakehouse-id>;"
    "AuthFlow=AZURE_CLI;"
    "LargeTableSupport=true;"
    "PageSizeBytes=18874368;"
    "EnableAsyncPrefetch=1;"
)

conn = pyodbc.connect(connection_string)
cursor = conn.cursor()
cursor.execute("SELECT * FROM large_table")

row_count = 0
while True:
    rows = cursor.fetchmany(1000)
    if not rows:
        break

    for row in rows:
        row_count += 1

    if row_count % 10000 == 0:
        print(f"Processed {row_count} rows")

print(f"Total rows processed: {row_count}")
conn.close()

ค้นพบสคีมาและตาราง

import pyodbc

conn = pyodbc.connect(connection_string)
cursor = conn.cursor()

cursor.execute("SHOW TABLES")
for table in cursor.fetchall():
    print(table)

cursor.execute("DESCRIBE employees")
for column in cursor.fetchall():
    print(column)

cursor.execute("SHOW SCHEMAS")
for schema in cursor.fetchall():
    print(schema)

conn.close()

การแมปชนิดข้อมูล

โปรแกรมควบคุมแมปชนิดข้อมูล Spark SQL กับชนิด ODBC SQL:

Spark SQL type ประเภท SQL ODBC ประเภท C/C++ ชนิด Python ประเภท .NET
BOOLEAN SQL_BIT SQLCHAR bool bool
BYTE SQL_TINYINT SQLSCHAR int sbyte
SHORT SQL_SMALLINT SQLSMALLINT int short
INT SQL_INTEGER SQLINTEGER int int
LONG SQL_BIGINT SQLBIGINT int long
FLOAT SQL_REAL SQLREAL float float
DOUBLE SQL_DOUBLE SQLDOUBLE float double
DECIMAL SQL_DECIMAL SQLCHAR* decimal.Decimal decimal
STRING SQL_VARCHAR SQLCHAR* str string
VARCHAR(n) SQL_VARCHAR SQLCHAR* str string
CHAR(n) SQL_CHAR SQLCHAR* str string
BINARY SQL_BINARY SQLCHAR* bytes byte[]
DATE SQL_TYPE_DATE SQL_DATE_STRUCT datetime.date DateTime
TIMESTAMP SQL_TYPE_TIMESTAMP SQL_TIMESTAMP_STRUCT datetime.datetime DateTime
ARRAY SQL_VARCHAR SQLCHAR* สตริง JSON string
MAP SQL_VARCHAR SQLCHAR* สตริง JSON string
STRUCT SQL_VARCHAR SQLCHAR* สตริง JSON string

ความแตกต่างของแพลตฟอร์ม

คุณสมบัติ Windows Linux
ผู้จัดการนักขับ Microsoft ODBC Driver Manager ยูนิกซ์ ODBC
ไบนารีไดรเวอร์ microsoftfabricodbc.dll libmicrosoftfabricodbc.so
การกําหนดค่า DSN รีจิสทรีและ GUI ของ Windows /etc/odbc.ini และ ~/.odbc.ini
การลงทะเบียนผู้ขับขี่ การลงทะเบียนและ odbcad32.exe odbcinst -i -d -f
ไคลเอนต์ HTTP WinHTTP ลิบเคิร์ล
TLS รองรับ Windows ในตัว OpenSSL
การตรวจสอบสิทธิ์ใบรับรอง Windows CryptoAPI OpenSSL พร้อมไฟล์ RS256 และ PEM หรือ PFX
การรับรองความถูกต้องแบบโต้ตอบ หน้าต่างเบราว์เซอร์ ไม่สามารถใช้งานได้บนเซิร์ฟเวอร์แบบไม่มีหัว
บรรจุภัณฑ์ ตัวติดตั้ง MSI แพ็กเกจลินุกซ์

การแก้ไขปัญหา

ไม่พบไดรเวอร์

ปัญหา: การเชื่อมต่อล้มเหลวเมื่อ [IM002] Data source name not found and no default driver specified.

โซลูชัน:

  1. ตรวจสอบการลงทะเบียนผู้ขับขี่โดยรัน odbcinst -q -d.
  2. ตรวจสอบว่ามีอยู่ /usr/lib/libmicrosoftfabricodbc.so จริง
  3. ลงทะเบียนไดรเวอร์โดยรัน sudo odbcinst -i -d -f /usr/share/microsoft-fabric-odbc-driver/odbcinst.ini.template.
  4. ติดตั้งแพ็กเกจใหม่โดยรัน sudo dpkg -i microsoft-fabric-odbc-driver-1.0.0-Linux.deb.

ไม่พบ DSN

ปัญหา: การเชื่อมต่อล้มเหลวเมื่อ [IM002] Data source name not found.

โซลูชัน:

  1. ตรวจสอบการกําหนดค่า DSN โดยรัน odbcinst -q -s.
  2. ตรวจสอบว่า ~/.odbc.ini หรือ /etc/odbc.ini มีส่วน DSN อยู่
  3. ตรวจสอบให้แน่ใจว่าค่าตรงกับ Driver ชื่อผู้ขับขี่ที่ลงทะเบียนไว้อย่างแม่นยํา

การเชื่อมต่อล้มเหลว

ปัญหา: ไดรเวอร์ไม่สามารถเชื่อมต่อกับ Fabric ได้

โซลูชัน:

  1. ตรวจสอบว่า Workspace ID และ Lakehouse ID เป็น GUID ที่ถูกต้อง
  2. ตรวจสอบการตรวจสอบสิทธิ์ Azure CLI โดยรัน az account show.
  3. ตรวจสอบให้แน่ใจว่าคุณมีสิทธิ์ Fabric workspace ที่จําเป็น
  4. ตรวจสอบการเชื่อมต่อเครือข่ายและการตั้งค่าพร็อกซี

ข้อผิดพลาดในการรับรองความถูกต้อง

ปัญหา: การตรวจสอบสิทธิ์ Azure CLI ล้มเหลว

โซลูชัน:

  1. รีเฟ az login รชข้อมูลรับรองของคุณ
  2. ตั้งค่าการสมัครสมาชิกที่ถูกต้องโดยการรัน az account set --subscription <subscription-id>.
  3. ตรวจสอบโทเค็นโดยการรัน az account get-access-token --resource https://api.fabric.microsoft.com.
  4. ตรวจสอบให้แน่ใจว่าบัญชีของคุณมีสิทธิ์ Fabric workspace ที่จําเป็น

ข้อผิดพลาดไลบรารีที่ใช้ร่วมกัน

ปัญหา: ไดรเวอร์รายงานerror while loading shared libraries: libmicrosoftfabricodbc.so .

โซลูชัน:

  1. ติดตั้งแพ็กเกจใหม่โดยรัน sudo dpkg -i microsoft-fabric-odbc-driver-1.0.0-Linux.deb.
  2. ตรวจสอบว่ามีอยู่ /usr/lib/libmicrosoftfabricodbc.so จริง
  3. รัน sudo ldconfig เพื่อรีเฟรชแคชไลบรารีที่ใช้ร่วมกัน

หมดเวลาคิวรี

ปัญหา: การค้นหาหมดเวลาบนตารางขนาดใหญ่

โซลูชัน:

  1. เพิ่มLargeTableSupport=trueเข้าไปใน สายอักขระการเชื่อมต่อ
  2. ปรับ PageSizeBytes ขนาดผลลัพธ์
  3. เพิ่มEnableAsyncPrefetch=1เข้าไปใน สายอักขระการเชื่อมต่อ
  4. ใช้ LIMIT คําสั่งเพื่อจํากัดขนาดผลลัพธ์

เปิดใช้งานการบันทึก

เปิดใช้งานการบันทึกรายละเอียดใน DSN:

[FabricDSN]
LogLevel = DEBUG
LogFile  = /tmp/fabric_odbc_debug.log

อีกทางเลือกหนึ่ง เพิ่มพารามิเตอร์การบันทึกลงใน สายอักขระการเชื่อมต่อ:

LogLevel=DEBUG;LogFile=/tmp/fabric_odbc_debug.log;

ไดรเวอร์รองรับระดับบันทึกดังต่อไปนี้:

  • TRACE: รวมการเรียก API ทั้งหมด
  • DEBUG: รวมข้อมูลการดีบักอย่างละเอียด
  • INFO: รวมข้อมูลทั่วไปและเป็นค่าเริ่มต้น
  • WARN: รวมเฉพาะคําเตือนเท่านั้น
  • ERROR: รวมเฉพาะข้อผิดพลาดเท่านั้น

เปิดใช้งานการติดตาม unixODBC

สําหรับการวินิจฉัยการเรียก ODBC ระดับต่ํา ให้เพิ่มการกําหนดค่าต่อไปนี้ใน /etc/odbcinst.ini:

[ODBC]
Trace     = yes
TraceFile = /tmp/odbc_trace.log

ปิดการติดตามเมื่อคุณแก้ไขปัญหาเสร็จเพื่อหลีกเลี่ยงภาระงานที่ไม่จําเป็น