หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
สำคัญ
คุณลักษณะนี้อยู่ใน แสดงตัวอย่าง
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 มีให้ใช้งานแบบสาธารณะ
วิธีติดตั้งไดรเวอร์:
สกัด
ms-sparksql-odbc-linux-1.0.0.zip.เปิดเทอร์มินัลในไดเรกทอรีที่แตกออกมา
ติดตั้งแพ็กเกจ 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.
โซลูชัน:
- ตรวจสอบการลงทะเบียนผู้ขับขี่โดยรัน
odbcinst -q -d. - ตรวจสอบว่ามีอยู่
/usr/lib/libmicrosoftfabricodbc.soจริง - ลงทะเบียนไดรเวอร์โดยรัน
sudo odbcinst -i -d -f /usr/share/microsoft-fabric-odbc-driver/odbcinst.ini.template. - ติดตั้งแพ็กเกจใหม่โดยรัน
sudo dpkg -i microsoft-fabric-odbc-driver-1.0.0-Linux.deb.
ไม่พบ DSN
ปัญหา: การเชื่อมต่อล้มเหลวเมื่อ [IM002] Data source name not found.
โซลูชัน:
- ตรวจสอบการกําหนดค่า DSN โดยรัน
odbcinst -q -s. - ตรวจสอบว่า
~/.odbc.iniหรือ/etc/odbc.iniมีส่วน DSN อยู่ - ตรวจสอบให้แน่ใจว่าค่าตรงกับ
Driverชื่อผู้ขับขี่ที่ลงทะเบียนไว้อย่างแม่นยํา
การเชื่อมต่อล้มเหลว
ปัญหา: ไดรเวอร์ไม่สามารถเชื่อมต่อกับ Fabric ได้
โซลูชัน:
- ตรวจสอบว่า Workspace ID และ Lakehouse ID เป็น GUID ที่ถูกต้อง
- ตรวจสอบการตรวจสอบสิทธิ์ Azure CLI โดยรัน
az account show. - ตรวจสอบให้แน่ใจว่าคุณมีสิทธิ์ Fabric workspace ที่จําเป็น
- ตรวจสอบการเชื่อมต่อเครือข่ายและการตั้งค่าพร็อกซี
ข้อผิดพลาดในการรับรองความถูกต้อง
ปัญหา: การตรวจสอบสิทธิ์ Azure CLI ล้มเหลว
โซลูชัน:
- รีเฟ
az loginรชข้อมูลรับรองของคุณ - ตั้งค่าการสมัครสมาชิกที่ถูกต้องโดยการรัน
az account set --subscription <subscription-id>. - ตรวจสอบโทเค็นโดยการรัน
az account get-access-token --resource https://api.fabric.microsoft.com. - ตรวจสอบให้แน่ใจว่าบัญชีของคุณมีสิทธิ์ Fabric workspace ที่จําเป็น
ข้อผิดพลาดไลบรารีที่ใช้ร่วมกัน
ปัญหา: ไดรเวอร์รายงานerror while loading shared libraries: libmicrosoftfabricodbc.so .
โซลูชัน:
- ติดตั้งแพ็กเกจใหม่โดยรัน
sudo dpkg -i microsoft-fabric-odbc-driver-1.0.0-Linux.deb. - ตรวจสอบว่ามีอยู่
/usr/lib/libmicrosoftfabricodbc.soจริง - รัน
sudo ldconfigเพื่อรีเฟรชแคชไลบรารีที่ใช้ร่วมกัน
หมดเวลาคิวรี
ปัญหา: การค้นหาหมดเวลาบนตารางขนาดใหญ่
โซลูชัน:
- เพิ่ม
LargeTableSupport=trueเข้าไปใน สายอักขระการเชื่อมต่อ - ปรับ
PageSizeBytesขนาดผลลัพธ์ - เพิ่ม
EnableAsyncPrefetch=1เข้าไปใน สายอักขระการเชื่อมต่อ - ใช้
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
ปิดการติดตามเมื่อคุณแก้ไขปัญหาเสร็จเพื่อหลีกเลี่ยงภาระงานที่ไม่จําเป็น