Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: SQL Server 2016 (13.x) dan versi yang lebih baru
Azure SQL Database
Azure SQL Managed Instance
SQL database di Microsoft Fabric
Virtualisasi data memungkinkan Anda menjalankan kueri Transact-SQL (T-SQL) melalui data eksternal tanpa memuatnya ke database Anda. PolyBase adalah fitur Mesin Database yang mengimplementasikan virtualisasi data di seluruh SQL Server dan Azure SQL. Anda menentukan sumber data eksternal, format file opsional, dan tabel eksternal, lalu mengkueri tabel eksternal dengan SELECT seperti tabel lainnya.
Panduan ini membantu Anda:
- Pahami PolyBase mana yang menampilkan platform SQL dan dukungan versi Anda.
- Pilih antara
OPENROWSET, tabel eksternal, danBULK INSERTuntuk mengkueri atau menyerap data. - Ikuti tautan langkah demi langkah untuk skenario umum.
- Tinjau performa, pemecahan masalah, dan praktik terbaik untuk beban kerja produksi.
Kasus penggunaan umum
Tabel berikut ini menjelaskan kemungkinan skenario penggunaan.
| Skenario | Pakai |
|---|---|
| Eksplorasi ad-hoc file | OPENROWSET(BULK ...) |
| Kueri file yang dapat digunakan kembali untuk BI/pelaporan | Tabel eksternal di atas file |
| Kueri lintas database (SQL Server, Oracle, Teradata, MongoDB, ODBC) | Konektor PolyBase dengan tabel eksternal |
| Mengekspor hasil kueri ke file |
CREATE EXTERNAL TABLE AS SELECT (CETAS) |
| Penyerapan massal ke dalam tabel |
BULK INSERT atau OPENROWSET(BULK ...) dengan INSERT ... SELECT |
Fitur mana yang tersedia di mana?
Tabel berikut menunjukkan polyBase inti dan fitur virtualisasi data mana yang tersedia di setiap platform SQL. Gunakan tabel ini untuk menentukan apa yang dapat Anda lakukan di platform Anda sebelum Anda menggunakan panduan terperinci.
| Feature | SQL Server 2019 | SQL Server 2022 | SQL Server 2025 | Azure SQL Database | Azure SQL Managed Instance | Database SQL di Microsoft Fabric |
|---|---|---|---|---|---|---|
| Tabel eksternal | Yes | Yes | Yes | Yes | Yes | Yes |
| OPENROWSET (BULK) | Ya 1 | Yes | Yes | Yes | Yes | Yes |
| CETAS (ekspor) | No | Yes | Yes | No | Yes | No |
| File CSV atau terbatas | Ya 2 | Yes | Yes | Yes | Yes | Yes |
| File Parquet | No | Yes | Yes | Yes | Yes | Yes |
| Tabel Delta Lake | No | Yes | Yes | No | No | No |
| Menyambungkan ke SQL Server lain | Yes | Yes | Yes | No | No | No |
| Menyambungkan ke Azure SQL Database atau Azure SQL Managed Instance | Ya 3 | Ya 3 | Ya 3 | No | No | No |
| Menyambungkan ke Oracle / Teradata / MongoDB | Yes | Yes | Yes | No | No | No |
| Menyambungkan ke Azure Blob Storage | Yes | Yes | Yes | Yes | Yes | No |
| Menyambungkan ke ADLS Gen2 | No | Yes | Yes | Yes | Yes | No |
| Menyambungkan ke penyimpanan yang kompatibel dengan S3 | No | Yes | Yes | No | No | No |
| Sambungkan ke OneLake (Fabric) | No | No | No | No | No | Yes |
| Komputasi tumpukan | Yes | Yes | Yes | No | No | No |
| Autentikasi Identitas Terkelola | No | No | Ya 4 | Yes | Yes | No |
1 SQL Server 2019 (15.x) mendukung jalur file lokal dan jaringan. Di SQL Server 2022 (16.x) dan versi yang lebih baru, OPENROWSET(BULK...) juga mendukung pembacaan dari penyimpanan cloud dengan FORMAT = 'PARQUET', FORMAT = DELTA, dan FORMAT = 'CSV'.
2 dukungan CSV di SQL Server 2019 (15.x) diperlukan Hadoop. Di SQL Server 2022 (16.x) dan versi yang lebih baru, CSV didukung secara asli tanpa Hadoop.
3 Menggunakan konektor SQL Server (sqlserver://). Kredensial cakupan database menargetkan titik akhir Azure SQL, langkah yang sama seperti menyambungkan ke SQL Server lain.
4 Autentikasi Identitas Terkelola didukung untuk menyambungkan ke Azure Blob Storage (ABS) dan ADLS Gen2. Ini memerlukan SQL Server yang diaktifkan Azure Arc atau SQL Server di Komputer Virtual Azure untuk SQL Server lokal. Ini tersedia secara asli di Azure SQL Database dan Azure SQL Managed Instance.
Nota
Mulai SQL Server 2025 (17.x), mengkueri file data (CSV, Parquet, dan Delta) di Penyimpanan Azure Blob, ADLS Gen2, atau penyimpanan yang kompatibel dengan S3 adalah kemampuan mesin asli dan tidak lagi memerlukan penginstalan atau menjalankan layanan PolyBase. Konektor RDBMS (SQL Server, Oracle, Teradata, MongoDB, ODBC) masih memerlukan layanan PolyBase untuk diinstal dan dijalankan. SQL Server 2025 (17.x) juga menambahkan dukungan Linux untuk konektor ini, yang sebelumnya hanya tersedia di Windows.
Kueri data eksternal
Sebelum Anda memilih skenario tertentu, pahami tiga cara untuk mengkueri data eksternal:
| Pendekatan | Sintaksis | Gunakan ketika diperlukan | Authentication | PolyBase diperlukan |
|---|---|---|---|---|
| Kueri ad hoc OLE DB | OPENROWSET(provider, connection, query) |
Anda menginginkan kueri satu kali cepat tanpa objek persisten, atau memerlukan autentikasi ID Microsoft Entra | Autentikasi SQL, autentikasi Windows, ID Microsoft Entra (MSOLEDBSQL) | No |
| File kueri ad hoc | OPENROWSET(BULK ...) |
Anda ingin menjelajahi data file dengan cepat atau menguji skema sebelum membuat tabel | Token SAS, kunci akses, Identitas Terkelola, ID Microsoft Entra | Ya untuk Azure SQL Database dan Azure SQL Managed Instance Tidak untuk instans SQL Server |
| Konektor data yang berkelanjutan |
CREATE EXTERNAL TABLE dengan sqlserver://, oracle://, teradata://, dll. |
Anda memerlukan akses yang berulang secara otomatis, tata kelola, statistik, dan komputasi terdorong untuk produksi | Autentikasi SQL saja | Yes |
Layanan PolyBase diperlukan untuk akses file cloud di SQL Server 2019 (15.x) dan SQL Server 2022 (16.x). SQL Server 2025 (17.x) dan versi yang lebih baru memiliki dukungan asli untuk CSV, Parquet, dan Delta tanpa PolyBase.
Panduan keputusan
| Skenario | Recommendation |
|---|---|
| Saya memerlukan autentikasi ID Microsoft Entra untuk SQL jarak jauh, atau ingin menghindari layanan PolyBase | Gunakan OPENROWSET(MSOLEDBSQL, ...) (ad hoc, tidak ada objek persisten) |
| Saya memerlukan tabel persisten, statistik, atau komputasi pushdown ke basis data yang berjauhan. | Gunakan CREATE EXTERNAL TABLE dengan konektor PolyBase (sqlserver://, , oracle://, teradata://mongodb://, odbc://).
OPENROWSET
tidak mendukung konektor |
| Saya menjelajahi file baru atau menguji skema | Gunakan OPENROWSET(BULK ...) (perulangan cepat, tidak ada objek persisten) |
| Saya memasukkan data file ke dalam tabel dengan transformasi | Gunakan INSERT ... SELECT dari OPENROWSET(BULK ...) |
| Saya memerlukan tata kelola atau akses bersama untuk banyak pengguna atau aplikasi | Gunakan CREATE EXTERNAL TABLE agar izin dan metadata terpusat |
| Saya bekerja di database SQL di Fabric | Gunakan OPENROWSET(BULK ...) untuk kueri Ad Hoc OneLake atau tabel eksternal untuk akses yang dapat digunakan kembali; untuk penyimpanan eksternal, gunakan pintasan OneLake |
Pilih skenario Anda
Sekarang setelah Anda memahami tiga pendekatan, gunakan salah satu panduan berikut untuk mengimplementasikan kasus penggunaan spesifik Anda.
Berkas kueri (Parquet, CSV, atau Delta)
Jika data Anda berada dalam file Parquet, CSV, atau Delta di Azure Blob Storage, ADLS Gen2, penyimpanan yang kompatibel dengan S3, atau OneLake, ikuti salah satu panduan berikut:
| Skenario | Panduan yang direkomendasikan | Platforms |
|---|---|---|
| Kueri ad hoc cepat pada file Parquet atau CSV | Gunakan OPENROWSET. Tidak diperlukan tabel eksternal |
SQL Server 2022 (16.x) dan versi yang lebih baru, Azure SQL Database, Azure SQL Managed Instance, database SQL di Fabric |
| Kueri berulang pada file Parquet dengan skema persisten | Membuat tabel eksternal melalui Parquet | SQL Server 2022 (16.x) dan versi yang lebih baru, Azure SQL Database, Azure SQL Managed Instance, database SQL di Fabric |
| Mengkueri file CSV dengan tabel eksternal | Membuat tabel eksternal dengan format file untuk teks yang dibatasi | SQL Server 2019 (15.x) dan versi yang lebih baru, Azure SQL Database, Azure SQL Managed Instance, database SQL di Fabric |
| Menanyakan tabel Delta Lake | Membuat tabel eksternal dengan FILE_FORMAT = DeltaLakeFileFormat |
SQL Server 2022 (16.x) dan versi yang lebih baru |
| Mengekspor hasil kueri ke file Parquet atau CSV (CETAS) | Gunakan CREATE EXTERNAL TABLE AS SELECT |
SQL Server 2022 (16.x) dan versi yang lebih baru, Azure SQL Managed Instance |
Anda juga dapat mengikuti salah satu tutorial langkah demi langkah ini:
| Tutorial | Deskripsi |
|---|---|
| Mulai menggunakan PolyBase di SQL Server 2022 |
OPENROWSET Mencakup dengan Parquet dan CSV, tabel eksternal, dan navigasi folder. |
| Memvirtualisasi file parquet dalam penyimpanan objek yang kompatibel dengan S3 menggunakan PolyBase | Tutorial untuk SQL Server 2022 (16.x) dan versi yang lebih baru. |
| Virtualisasi file CSV dengan PolyBase | Tutorial untuk SQL Server 2022 (16.x) dan versi yang lebih baru. |
| Virtualisasi tabel delta dengan PolyBase | Tutorial untuk SQL Server 2022 (16.x) dan versi yang lebih baru. |
| Virtualisasi data dengan Azure SQL Database (Pratinjau) | Panduan Azure SQL Database untuk Parquet dan CSV. |
| Virtualisasi data dengan Azure SQL Managed Instance | Panduan Azure SQL Managed Instance untuk Parquet, CSV, dan CETAS. |
| Virtualisasi data dalam database SQL di Fabric | Database SQL dalam panduan Fabric untuk file OneLake. |
Menyambungkan ke instans SQL Server lain, Azure SQL Database, atau SQL Managed Instance
Di SQL Server 2019 (15.x) dan versi yang lebih baru, PolyBase dapat mengkueri tabel di instans SQL Server lain, Azure SQL Database, atau Azure SQL Managed Instance, tanpa menggunakan server tertaut.
Penting
Konektor sqlserver:// tidak didukung dalam database SQL di Fabric. Konektor PolyBase RDBMS menggunakan autentikasi SQL melalui CREATE DATABASE SCOPED CREDENTIAL dan tidak mendukung ID Microsoft Entra, Identitas Terkelola, atau autentikasi perwakilan layanan. Karena database SQL di Fabric memerlukan autentikasi Microsoft Entra, Anda tidak dapat menyambungkannya menggunakan PolyBase.
| Step | Apa yang harus dilakukan |
|---|---|
| 1. Instal PolyBase | Menginstal PolyBase di Windows atau Menginstal PolyBase di Linux |
| 2. Buat kredensial |
CREATE DATABASE SCOPED CREDENTIAL dengan target masuk |
| 3. Buat sumber data eksternal | CREATE EXTERNAL DATA SOURCE ... WITH (LOCATION = 'sqlserver://<server>') |
| 4. Buat tabel eksternal | CREATE EXTERNAL TABLE ... WITH (LOCATION = '<db>.<schema>.<table>') |
| 5. Kueri | SELECT * FROM <external_table> |
Petunjuk / Saran
Konektor SQL Server (sqlserver://) juga berfungsi untuk Azure SQL Database dan Azure SQL Managed Instance. Gunakan langkah yang sama, dan atur LOCATION ke titik akhir Azure SQL (misalnya, sqlserver://myserver.database.windows.net).
Untuk panduan terperinci, lihat Mengonfigurasi PolyBase untuk mengakses data eksternal di SQL Server.
Menyambungkan ke Oracle, Teradata, atau MongoDB
SQL Server 2019 (15.x) dan versi yang lebih baru dapat mengkueri Oracle, Teradata, MongoDB, dan Cosmos DB melalui konektor PolyBase ODBC.
| Sumber data | Panduan | Persyaratan |
|---|---|---|
| Oracle | Mengonfigurasi PolyBase untuk mengakses data eksternal di Oracle | SQL Server 2019 (15.x) dan versi yang lebih baru, driver klien Oracle |
| Teradata | Mengonfigurasi PolyBase untuk mengakses data eksternal di Teradata | SQL Server 2019 (15.x) dan versi yang lebih baru, driver ODBC Teradata |
| MongoDB / Cosmos DB | Mengonfigurasi PolyBase untuk mengakses data eksternal di MongoDB | SQL Server 2019 (15.x) dan versi yang lebih baru, driver ODBC MongoDB |
| Sumber data ODBC apa pun | Mengonfigurasi PolyBase untuk mengakses data eksternal dengan jenis generik ODBC | SQL Server 2019 (15.x) dan versi yang lebih baru (Windows) (Linux dimulai dengan SQL Server 2025 (17.x)) |
Menyambungkan ke Azure Blob Storage atau ADLS Gen2
| Platform SQL | Opsi autentikasi | Panduan |
|---|---|---|
| SQL Server 2022 (16.x) dan versi yang lebih baru | Token SAS, kunci akses, Identitas Terkelola (dimulai dengan SQL Server 2025 (17.x)) | Mengonfigurasi PolyBase untuk mengakses data eksternal di Azure Blob Storage |
| SQL Server 2019 (15.x) | Kunci akses (melalui konektor Hadoop) | Mengonfigurasi PolyBase untuk mengakses data eksternal di Azure Blob Storage |
| Azure SQL Database | Token SAS, Identitas Terkelola, Microsoft Entra pass-through | Virtualisasi data dengan Azure SQL Database (Pratinjau) |
| Azure SQL Managed Instance | Token SAS, Identitas Terkelola | Virtualisasi data dengan Azure SQL Managed Instance |
Di SQL Server 2022 (16.x), awalan URI berubah. Saat bermigrasi dari SQL Server 2019 (15.x) atau versi yang lebih lama:
-
Azure Blob Storage: Ubah
wasb[s]://menjadiabs:// -
ADLS Gen2: Ubah
abfs[s]://menjadiadls://
Untuk informasi selengkapnya, lihat Mengonfigurasi PolyBase untuk mengakses data eksternal di Azure Blob Storage.
Menyambungkan ke penyimpanan objek yang kompatibel dengan S3
SQL Server 2022 (16.x) dan versi yang lebih baru mendukung penyimpanan yang kompatibel dengan S3, seperti Amazon S3, MinIO, dan Ceph.
Untuk informasi selengkapnya, lihat Mengonfigurasi PolyBase untuk mengakses data eksternal di penyimpanan objek yang kompatibel dengan S3.
Mengekspor data dengan CREATE EXTERNAL TABLE AS SELECT (CETAS)
CETAS mengekspor hasil kueri ke file eksternal (Parquet atau CSV) di Penyimpanan Azure Blob, ADLS Gen2, atau penyimpanan yang kompatibel dengan S3.
| Platform SQL | Dukungan | Mengekspor format | Catatan |
|---|---|---|---|
| SQL Server 2022 (16.x) dan versi yang lebih baru | Yes | Parquet, CSV | Memerlukan konfigurasi Server: izinkan ekspor Polybase |
| Azure SQL Managed Instance | Yes | Parquet, CSV | Dinonaktifkan secara default |
| Azure SQL Database | No | Tidak | Tidak tersedia |
| Basis data SQL dalam Fabric | No | Tidak | Tidak tersedia |
Untuk referensi Transact-SQL, lihat CREATE EXTERNAL TABLE AS SELECT (CETAS).
Contoh Penggunaan Cepat
Contoh 1: Kueri ad hoc pada file Parquet (OPENROWSET)
Tidak diperlukan tabel eksternal. Berfungsi pada SQL Server 2022 (16.x) dan versi yang lebih baru, Azure SQL Database, Azure SQL Managed Instance, dan database SQL di Fabric.
SELECT TOP 10 *
FROM OPENROWSET (
BULK 'abs://mycontainer@mystorageaccount.blob.core.windows.net/data/sales/*.parquet',
FORMAT = 'PARQUET'
) AS [result];
Contoh 2: Tabel eksternal melalui CSV di Azure Blob Storage
Contoh ini berfungsi pada semua platform SQL yang mendukung PolyBase.
Langkah 1: Buat kunci master database (DMK). Langkah ini diperlukan karena kredensial menyimpan rahasia token SAS. Namun, Anda dapat melakukan langkah ini jika Anda menggunakan Identitas Terkelola atau autentikasi Microsoft Entra.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<strong_password>';Langkah 2: Buat kredensial dengan token SAS. Hilangkan bagian depan
?.CREATE DATABASE SCOPED CREDENTIAL MyStorageCred WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = '<your_SAS_token>'; -- omit the leading '?'Langkah 3: Buat sumber data eksternal.
CREATE EXTERNAL DATA SOURCE MyAzureStorage WITH ( LOCATION = 'abs://mycontainer@mystorageaccount.blob.core.windows.net', CREDENTIAL = MyStorageCred );Langkah 4: Buat format file untuk CSV.
CREATE EXTERNAL FILE FORMAT CsvFormat WITH ( FORMAT_TYPE = DELIMITEDTEXT, FORMAT_OPTIONS ( FIELD_TERMINATOR = ',', STRING_DELIMITER = '"', FIRST_ROW = 2 ) );Langkah 5: Buat tabel eksternal.
CREATE EXTERNAL TABLE dbo.SalesExternal ( OrderId INT, OrderDate DATE, Amount DECIMAL (18, 2), Customer NVARCHAR (100) ) WITH ( DATA_SOURCE = MyAzureStorage, LOCATION = '/data/sales/', FILE_FORMAT = CsvFormat );Langkah 6: Mengkueri tabel eksternal.
SELECT * FROM dbo.SalesExternal WHERE OrderDate >= '2025-01-01';
Contoh 3: Mengkueri tabel di SQL Server lain
Contoh ini berfungsi pada SQL Server 2019 (15.x) dan versi yang lebih baru.
Langkah 1: Buat kunci master database (diperlukan karena kredensial menyimpan kata sandi).
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<strong_password>';Langkah 2: Buat kredensial untuk instans SQL Server jarak jauh.
CREATE DATABASE SCOPED CREDENTIAL RemoteSqlCred WITH IDENTITY = 'remote_user', SECRET = '<password>';Langkah 3: Buat sumber data eksternal.
CREATE EXTERNAL DATA SOURCE RemoteSqlServer WITH ( LOCATION = 'sqlserver://remote-server.contoso.com', PUSHDOWN = ON, CREDENTIAL = RemoteSqlCred );Langkah 4: Buat tabel eksternal (nama tiga bagian di
LOCATION).CREATE EXTERNAL TABLE dbo.RemoteCustomers ( CustomerId INT, CustomerName NVARCHAR (200) COLLATE SQL_Latin1_General_CP1_CI_AS ) WITH ( DATA_SOURCE = RemoteSqlServer, LOCATION = 'SalesDB.dbo.Customers' );Langkah 5: Kueri di seluruh server.
SELECT c.CustomerName, s.Amount FROM dbo.RemoteCustomers AS c INNER JOIN dbo.LocalSales AS s ON c.CustomerId = s.CustomerId;
Contoh 4: Mengekspor hasil ke Parquet dengan CETAS
Berfungsi pada SQL Server 2022 (16.x) dan versi yang lebih baru, Azure SQL Managed Instance.
Langkah 1: Aktifkan CETAS (hanya SQL Server).
EXECUTE sp_configure 'allow polybase export', 1; RECONFIGURE;Langkah 2: Buat kredensial dan sumber data (gunakan kembali dari contoh sebelumnya).
Langkah 3: Buat format file untuk ekspor Parquet.
CREATE EXTERNAL FILE FORMAT ParquetFormat WITH ( FORMAT_TYPE = PARQUET );Langkah 4: Ekspor hasil kueri.
CREATE EXTERNAL TABLE dbo.Sales2025Export WITH ( DATA_SOURCE = MyAzureStorage, LOCATION = '/exports/sales_2025.parquet', FILE_FORMAT = ParquetFormat ) AS SELECT * FROM Sales.Orders WHERE OrderDate >= '2025-01-01';
Blok penyusun T-SQL untuk PolyBase
Sebelum menerapkan skenario apa pun, pahami objek T-SQL inti yang digunakan PolyBase dan bagaimana mereka cocok bersama:
Diagram memperlihatkan objek T-SQL PolyBase dan hubungannya, dari autentikasi (kunci master database, kredensial) melalui sumber data dan format file ke metode kueri (Tabel Eksternal, OPENROWSET, BULK INSERT, CETAS).
Untuk informasi tentang pernyataan T-SQL ini, lihat:
- Buat Sumber Data Eksternal
- BUAT FORMAT FILE EKSTERNAL
- Buat Tabel Eksternal
- OPENROWSET
- BUAT TABEL EKSTERNAL SEBAGAI HASIL DARI PILIHAN (CETAS)
Untuk referensi Transact-SQL lengkap untuk semua objek, lihat referensi Transact-SQL PolyBase.
Penting
Periksa pemetaan jenis data untuk format file eksternal Anda. Saat Anda membuat format file eksternal, atau file kueri menggunakan OPENROWSET, PolyBase secara otomatis memetakan jenis data sumber (Parquet, CSV, Delta, Oracle, Teradata, MongoDB) ke jenis data SQL Server. Jenis yang tidak cocok dapat menyebabkan pemotongan diam-diam, kehilangan presisi, atau kesalahan kueri. Misalnya, sebuah Parquet DECIMAL(38,18) dipetakan menjadi DECIMAL(18,0). Tinjau tabel pemetaan sebelum Anda menentukan kolom tabel eksternal atau WITH klausa. Untuk referensi lengkapnya, lihat Pemetaan jenis dengan PolyBase.
Kapan CREATE MASTER KEY diperlukan?
Kunci master database (DMK) dibuat menggunakan CREATE MASTER KEY sintaksis. DMK mengenkripsi rahasia yang disimpan di dalam kredensial yang dicakup oleh database. Ini diperlukan hanya ketika kredensial berisi nilai rahasia, yaitu, ketika menyimpan kata sandi, token, atau kunci akses.
DMK diperlukan (kredensial menyimpan rahasia):
Jenis autentikasi IDENTITYnilaiMemiliki rahasia DMK token SAS 'SHARED ACCESS SIGNATURE'Yes Required Kunci akses S3 'S3 ACCESS KEY'Yes Required Login SQL / autentikasi dasar '<username>'Yes Required Kunci akses akun penyimpanan '<storage_account_name>'Yes Required DMK tidak diperlukan (tidak ada rahasia yang disimpan):
Jenis autentikasi IDENTITYnilaiMemiliki rahasia DMK Identitas yang Dikelola 'Managed Identity'No Tidak diperlukan Microsoft Entra ID 'User Identity'atau'Managed Identity'No Tidak diperlukan
Petunjuk / Saran
Jika tidak ada rahasia dalam pernyataan CREATE DATABASE SCOPED CREDENTIAL Anda, Anda tidak memerlukan DMK. Autentikasi Identitas Terkelola dan ID Microsoft Entra mendelegasikan kepercayaan ke platform. Database tidak menyimpan kata sandi atau token.
contoh :
Dalam contoh kueri ini, DMK diperlukan (Kredensial menyimpan token SAS).
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<strong_password>';
CREATE DATABASE SCOPED CREDENTIAL SasCred
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = '<your_SAS_token>';
Dalam contoh kueri ini, DMK tidak diperlukan (Identitas Terkelola, tanpa rahasia).
CREATE DATABASE SCOPED CREDENTIAL ManagedIdentityCred
WITH IDENTITY = 'Managed Identity';
Dalam contoh kueri ini, DMK tidak diperlukan (Microsoft Entra pass-through, tanpa rahasia).
CREATE DATABASE SCOPED CREDENTIAL EntraIdCred
WITH IDENTITY = 'User Identity';
Akses data jarak jauh dengan OPENROWSET dan tabel eksternal
SQL Server menawarkan tiga pendekatan berbeda untuk mengkueri data jarak jauh. Anda dapat memilih pendekatan yang tepat saat memahami perbedaan sintaks, autentikasi, dan arsitektur.
| Pendekatan | Sintaksis | Menyambungkan ke | Authentication | Layanan PolyBase | Platforms |
|---|---|---|---|---|---|
| Kueri OLE DB | OPENROWSET(provider, connection, query) |
Sumber OLE DB apa pun melalui MSOLEDBSQL, SQLOLEDB, atau penyedia lainnya | Autentikasi SQL, autentikasi Windows, ID Microsoft Entra (MSOLEDBSQL) | No | SQL Server (semua versi yang didukung) |
| Kueri file | OPENROWSET(BULK ...) |
File di disk, jaringan, atau cloud lokal (Azure Blob, ADLS, S3, OneLake) | Token SAS, kunci akses, Identitas Terkelola, ID Microsoft Entra | Ya untuk cloud*; Tidak untuk lokal | SQL Server 2005; SQL Server 2022 (16.x) dan versi yang lebih baru (cloud); Azure SQL |
| Konektor PolyBase |
CREATE EXTERNAL TABLE dengan CREATE EXTERNAL DATA SOURCE menggunakan sqlserver://, oracle://, teradata://, mongodb://, odbc:// |
Sumber SQL Server Jarak Jauh, Oracle, Teradata, MongoDB, ODBC | Autentikasi SQL saja | Yes | SQL Server 2019 (15.x) dan versi yang lebih baru (Windows); SQL Server 2025 (17.x) dan versi yang lebih baru (Linux) |
Layanan PolyBase diperlukan untuk akses file cloud di SQL Server 2019 (15.x) dan SQL Server 2022 (16.x). SQL Server 2025 (17.x) dan versi yang lebih baru memiliki dukungan file cloud asli dan tidak lagi memerlukan PolyBase untuk CSV, Parquet, atau Delta.
Kapan menggunakan setiap pendekatan
Gunakan OLE DB OPENROWSET untuk:
- Kueri ad hoc satu kali yang cepat tanpa membuat objek persisten
- ID Microsoft Entra atau autentikasi Identitas Terkelola (melalui MSOLEDBSQL)
- Menghindari dependensi layanan PolyBase
- Menyambungkan ke sumber data apa pun dengan penyedia OLE DB
Gunakan File OPENROWSET(BULK) untuk:
- Eksplorasi file ad hoc dan penemuan skema
- Transformasi dan pratinjau cepat sebelum berkomitmen pada definisi tabel
- Transformasi kolom fleksibel sebaris (pengubahan jenis data, pemfilteran, kolom terhitung)
- Data yang tidak sering berubah, dan tidak memerlukan metadata persisten
Gunakan konektor PolyBase dengan CREATE EXTERNAL TABLE untuk:
- Definisi tabel yang persisten dan dapat digunakan kembali yang diakses oleh beberapa pengguna atau aplikasi
- Beban kerja produksi yang memerlukan statistik dan pengoptimalan rencana kueri
- Komputasi pushdown ke sumber daya jarak jauh (filter didorong ke Oracle, SQL Server, dll.)
- Tata kelola dan keamanan bersama (setelah dibuat, pengguna hanya memerlukan
SELECTizin) - Ketika Anda memiliki autentikasi SQL yang tersedia untuk sumber jarak jauh
OPENROWSET (OLE DB) - kueri jarak jauh ad hoc (tidak diperlukan layanan PolyBase)
Bentuk OPENROWSET OLE DB terhubung ke sumber data jarak jauh melalui penyedia OLE DB, menjalankan kueri pass-through, dan mengembalikan hasilnya sebagai set baris. Ini adalah alternatif ad hoc sekali pakai untuk server tertaut. Tidak ada metadata persisten yang dibuat. Sintaks ini tidak memerlukan layanan PolyBase, dan tidak mendukung file cloud atau sumber data eksternal.
Contoh kueri ini tersambung ke SQL Server jarak jauh melalui OLE DB (bukan PolyBase).
SELECT *
FROM OPENROWSET (
'MSOLEDBSQL',
'Server=remote-server;Database=AdventureWorks;Trusted_Connection=yes;',
'SELECT TOP 10 * FROM AdventureWorks.Sales.SalesOrderHeader'
);
OPENROWSET(BULK) - kueri berbasis file (PolyBase)
Bentuk BULK dari OPENROWSET membaca data langsung dari berkas-berkas. Pada SQL Server 2019 (15.x) dan versi yang lebih lama, SQL Server membaca dari jalur file lokal atau UNC dan memerlukan file format. Di SQL Server 2022 (16.x) dan versi yang lebih baru, Anda dapat membaca dari penyimpanan cloud menggunakan parameter DATA_SOURCE dan FORMAT. Pendekatan ini adalah versi terintegrasi PolyBase yang digunakan untuk virtualisasi data.
Dalam konteks PolyBase dan virtualisasi data, ketika panduan ini mengacu pada OPENROWSET, itu berarti sintaks OPENROWSET(BULK ...) dengan klausa FORMAT untuk menjalankan kueri pada file eksternal.
contoh :
Contoh kueri ini membaca file Parquet dari Azure Blob Storage (SQL Server 2022 dan versi yang lebih baru).
SELECT TOP 10 *
FROM OPENROWSET (
BULK 'data/sales/*.parquet',
DATA_SOURCE = 'MyAzureStorage',
FORMAT = 'PARQUET'
) AS [result];
Contoh kueri ini membaca file Parquet dengan jalur sebaris (Azure SQL Database, Azure SQL Managed Instance).
SELECT TOP 10 *
FROM OPENROWSET (
BULK 'abs://mycontainer@mystorageaccount.blob.core.windows.net/data/sales/*.parquet',
FORMAT = 'PARQUET'
) AS [result];
Kapan menggunakan OPENROWSET vs. tabel eksternal
Baik OPENROWSET(BULK ...) maupun tabel eksternal memungkinkan Anda untuk mengkueri data eksternal dengan T-SQL, namun keduanya dirancang untuk kasus penggunaan yang berbeda. Tabel berikut ini meringkas perbedaan utama untuk membantu Anda memutuskan pendekatan mana yang sesuai dengan skenario Anda.
| Kemampuan | OPENROWSET(BULK ...) |
Tabel eksternal |
|---|---|---|
| Purpose | Eksplorasi langsung dan kueri sekali pakai | Definisi tabel yang persisten dan dapat digunakan kembali |
| Metadata disimpan dalam database | Tidak. Tidak ada yang disimpan setelah kueri dijalankan | Ya. Definisi tabel, sumber data, dan format file disimpan sebagai objek database |
| Definisi skema | Disimpulkan secara otomatis dari file (Parquet) atau ditentukan secara langsung dengan klausa WITH |
Ditentukan secara eksplisit dalam CREATE EXTERNAL TABLE pernyataan |
| Permissions |
ADMINISTER BULK OPERATIONS Memerlukan ADMINISTER DATABASE BULK OPERATIONS atau ADMINISTER BULK OPERATIONS |
Setelah dibuat, izin standar SELECT pada tabel sudah cukup |
| Kolom terhitung | Ya. Tambahkan ekspresi dan kolom komputasi dalam SELECT daftar; fungsi metadata seperti filename() dan filepath() hanya tersedia di sini. |
Tidak. Daftar kolom tetap; melakukan transformasi dalam tampilan atau dalam kueri yang membaca tabel eksternal |
| Statistik | Azure SQL: statistik kolom tunggal manual melalui sys.sp_create_openrowset_statistics; SQL Server 2022 (16.x) dan versi yang lebih baru: buat statistik secara otomatis pada predikat (tidak ada statistik manual di SQL Server). Lihat Statistik manual OPENROWSET. |
Dukungan penuh CREATE STATISTICS pada semua platform, ditambah pembuatan otomatis di SQL Server 2022 (16.x) dan versi yang lebih baru. Lihat Membuat statistik manual tabel eksternal. |
| Pushdown | Dukungan terbatas. Mesin mungkin mendorong filter ke bawah ke pemindaian file tetapi tidak ada pushdown ke sumber RDBMS jarak jauh | Ya. Mendukung komputasi pushdown untuk konektor RDBMS (SQL Server, Oracle, Teradata, MongoDB) |
| Pilihan terbaik untuk | Eksplorasi data, penemuan skema, kueri prototipe, pemuatan data satu kali, transformasi fleksibel | Beban kerja produksi, kueri berulang, akses bersama untuk semua pengguna, dasbor, dan pelaporan |
Gunakan OPENROWSET saat Anda membutuhkan fleksibilitas
Gunakan OPENROWSET untuk menjelajahi file, menguji skema yang berbeda, atau menambahkan kolom dan transformasi komputasi tanpa membuat objek persisten apa pun. Misalnya, Anda dapat mengekstrak jalur file sebagai kolom, mentransmisikan jenis data sebaris, atau memfilter ekspresi komputasi dalam satu kueri.
Contoh kueri ini mencakup kolom dan transformasi komputasi:
SELECT result.filename() AS [FileName],
result.filepath(1) AS [Year],
result.filepath(2) AS [Month],
CAST (OrderDate AS DATE) AS OrderDate,
Amount,
OrderDate
FROM OPENROWSET (
BULK 'abs://mycontainer@mystorageaccount.blob.core.windows.net/data/sales/*/*/*/*.parquet',
FORMAT = 'PARQUET'
) AS result
WHERE result.filepath(1) = '2025';
Petunjuk / Saran
Fungsi filepath() dan filename() tersedia di Azure SQL Database, Azure SQL Managed Instance, dan SQL Server 2022 (16.x) dan versi yang lebih baru. Mereka memungkinkan Anda memfilter pada bagian jalur file (eliminasi partisi) dan mengekspos nama file sumber sebagai kolom, yang tidak secara langsung dimungkinkan dengan tabel eksternal.
Menggunakan tabel eksternal saat Anda memerlukan persistensi dan tata kelola
Gunakan tabel eksternal saat beberapa pengguna atau aplikasi perlu mengkueri data eksternal yang sama berulang kali. Anda menentukan skema, sumber data, dan kredensial sekali dan menyimpannya di database. Konsumen hanya memerlukan SELECT izin akses terhadap tabel.
Tabel eksternal juga mendukung statistik, yang digunakan pengoptimal kueri untuk membangun rencana eksekusi yang lebih baik. Anda dapat membuat statistik secara manual atau membiarkan mesin membuatnya secara otomatis (SQL Server 2022 (16.x) dan versi yang lebih baru).
Contoh kueri ini membuat statistik pada tabel eksternal untuk rencana kueri yang lebih baik.
CREATE STATISTICS Stats_OrderDate
ON dbo.SalesExternal(OrderDate)
WITH FULLSCAN;
Untuk informasi selengkapnya tentang statistik untuk kedua pendekatan, lihat Pertimbangan performa PolyBase - Statistik.
SISIPAN BULK vs. OPENROWSET(BULK): Mana yang harus saya gunakan?
Baik BULK INSERT dan OPENROWSET(BULK ...) mengimpor data dari file ke SQL Server dengan menggunakan mesin pemuatan massal yang sama dan mendasar. Namun, mereka berbeda dalam sintaksis, fleksibilitas, dan apa yang dapat Anda lakukan dengan hasilnya. Tabel berikut ini meringkas perbedaan utama:
Nota
BULK INSERT tidak tersedia dalam database SQL di Fabric. Untuk Fabric, gunakan OPENROWSET(BULK ...) terhadap OneLake.
| Kemampuan | BULK INSERT |
OPENROWSET(BULK ...) |
|---|---|---|
| Tujuan dasar | Memuat data dari file langsung ke tabel target | Mengembalikan kumpulan baris yang Anda gunakan dalam pernyataan SELECT atau INSERT ... SELECT |
| Pola penggunaan | Pernyataan mandiri: BULK INSERT <table> FROM '<file>' |
Harus digunakan di dalam kueri: SELECT * FROM OPENROWSET(BULK ...) atau INSERT INTO <table> SELECT * FROM OPENROWSET(BULK ...) |
| Membutuhkan tabel target? | Ya. Selalu menulis langsung ke tabel | Tidak. Anda dapat SELECT darinya tanpa menyisipkannya ke tempat mana pun, atau menyisipkannya ke dalam tabel atau tabel sementara. |
| Transformasi kolom selama pemuatan | Dukungan terbatas. Data mengalir dari file ke tabel seperti adanya (pemetaan dikontrol oleh format file atau urutan kolom) | Dukungan penuh. Anda dapat menambahkan ekspresi, CASTWHERE filter, JOIN tabel lain, dan kolom komputasi di sekitarnyaSELECT |
| Petunjuk tabel | Klausul WITH ini mencakup dukungan untuk BATCHSIZE, , CHECK_CONSTRAINTSFIRE_TRIGGERS, KEEPIDENTITY, KEEPNULLS, TABLOCK, dan lainnya |
Mendukung petunjuk tabel melalui INSERT ... SELECT * FROM OPENROWSET(BULK ...) WITH (TABLOCK, IGNORE_CONSTRAINTS, ...) sintaks |
| Impor nilai tunggal objek besar (LOB) | Tidak didukung | Ya.
SINGLE_BLOBMendukung , SINGLE_CLOB, SINGLE_NCLOB untuk mengimpor seluruh file sebagai satu nilai varbinary(max), varchar(max), atau nvarchar(max) |
| Format file | Ya. Didukung melalui (XML dan non-XML) | Ya. Didukung (XML dan non-XML) |
| Akses file cloud (Azure Blob Storage, ADLS Gen2, S3) | Ya. Didukung melalui DATA_SOURCE parameter (SQL Server 2017 (14.x) dan versi yang lebih baru, Azure SQL) |
Ya. Didukung melalui parameter DATA_SOURCE atau URL di dalam baris dengan klausul FORMAT (SQL Server 2022 (16.x) dan versi yang lebih baru, Azure SQL) |
| File Parquet atau Delta | Tidak didukung. Hanya teks CSV/dibatasi | Ya. Didukung dengan FORMAT = 'PARQUET' atau FORMAT = 'DELTA' (SQL Server 2022 (16.x) dan versi yang lebih baru, Azure SQL) |
| Izin diperlukan |
ADMINISTER BULK OPERATIONS atau ADMINISTER DATABASE BULK OPERATIONS, plus INSERT pada tabel target |
ADMINISTER BULK OPERATIONS atau ADMINISTER DATABASE BULK OPERATIONS |
| Pengelogan minimal | Ya. Didukung di bawah model pemulihan sederhana atau dicatat massal dengan TABLOCK |
Ya. Didukung saat digunakan dengan INSERT ... SELECT dan TABLOCK |
Kapan memilih SISIPAN MASSAL
Gunakan BULK INSERT saat Anda memiliki beban file-ke-tabel yang mudah dan tidak perlu mengubah, memfilter, atau menggabungkan data selama impor. Ini menggunakan sintaks yang lebih sederhana untuk CSV atau file berbatas lainnya:
Contoh kueri ini memuat file CSV dari Azure Blob Storage langsung ke dalam tabel.
BULK INSERT Sales.Invoices
FROM 'invoices/inv-2025-01.csv'
WITH (
DATA_SOURCE = 'MyAzureBlobStorage',
FORMAT = 'CSV',
FIRSTROW = 2,
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
);
Contoh kueri ini memuat file lokal dengan file format untuk pemetaan kolom.
BULK INSERT dbo.Products
FROM 'C:\Data\products.csv'
WITH (
FORMATFILE = 'C:\Data\products.fmt',
FIRSTROW = 2,
TABLOCK
);
Kapan memilih OPENROWSET(BULK)
Gunakan OPENROWSET(BULK ...) saat Anda memerlukan satu atau beberapa kondisi berikut:
- Kueri atau pratinjau data file tanpa membuat tabel terlebih dahulu.
- Mengubah, memfilter, atau menggabungkan data selama impor.
-
Muat file Parquet atau Delta (hanya
OPENROWSETmendukung format ini). -
Impor seluruh file sebagai nilai LOB tunggal (
SINGLE_BLOB, ,SINGLE_CLOBSINGLE_NCLOB).
Contoh kueri ini mempratinjau file CSV dari Azure Blob Storage tanpa menyisipkan data di mana saja.
SELECT TOP 10 *
FROM OPENROWSET (
BULK 'invoices/inv-2025-01.csv',
DATA_SOURCE = 'MyAzureBlobStorage',
FORMAT = 'CSV',
FIRSTROW = 2,
FIELDTERMINATOR = ','
) AS src;
Contoh kueri ini menyisipkan data dengan transformasi dan pemfilteran.
INSERT INTO Sales.Invoices (InvoiceDate, Amount, Customer)
SELECT CAST (InvoiceDate AS DATE),
Amount * 1.1, -- Apply a 10% markup
UPPER(Customer)
FROM OPENROWSET (
BULK 'invoices/inv-2025-01.csv',
DATA_SOURCE = 'MyAzureBlobStorage',
FORMAT = 'CSV',
FIRSTROW = 2
) WITH (
InvoiceDate VARCHAR (10),
Amount DECIMAL (18, 2),
Customer VARCHAR (100)
) AS src
WHERE Amount IS NOT NULL;
Contoh kueri ini memuat file Parquet (tidak dimungkinkan dengan BULK INSERT).
INSERT INTO Sales.Invoices
SELECT *
FROM OPENROWSET (
BULK 'data/invoices/*.parquet',
DATA_SOURCE = 'MyAzureStorage',
FORMAT = 'PARQUET') AS src;
Contoh kueri ini mengimpor seluruh file XML sebagai nilai varbinary(max) tunggal.
INSERT INTO dbo.XmlDocuments (DocContent)
SELECT BulkColumn
FROM OPENROWSET (
BULK 'C:\Data\catalog.xml',
SINGLE_BLOB
) AS x;
Petunjuk / Saran
Salah satu pendekatannya adalah memulai dengan OPENROWSET(BULK ...) di SELECT untuk menjelajahi dan memvalidasi data file, lalu beralih ke BULK INSERT untuk beban produksi akhir jika Anda tidak memerlukan transformasi. Jika Anda memerlukan dukungan Parquet, Delta, atau pemfilteran sebaris, gunakan OPENROWSET.
Untuk informasi selengkapnya, lihat panduan terkait berikut ini:
- Gunakan BULK INSERT atau OPENROWSET(BULK...) untuk mengimpor data ke SQL Server: Panduan berdampingan terperinci dengan pertimbangan keamanan.
-
Impor dan Ekspor Data Massal (SQL Server): Gambaran umum semua metode pergerakan data massal (bcp,
BULK INSERT,OPENROWSET). - SISIPAN MASSAL (Transact-SQL): Referensi T-SQL lengkap.
- OPENROWSET BULK (Transact-SQL): Referensi T-SQL lengkap.
- Contoh akses massal ke data di Azure Blob Storage: Contoh berdampingan menggunakan kedua metode dengan penyimpanan Azure.
-
Mengimpor data objek besar secara massal dengan OpenROWSET Bulk Rowset Provider (SQL Server):
SINGLE_BLOB,SINGLE_CLOB, danSINGLE_NCLOBcontoh. - Gunakan file format untuk mengimpor data secara massal (SQL Server): Memformat penggunaan file dengan kedua metode.
Fungsi metadata yang berguna
Saat Anda mengkueri file eksternal dengan OPENROWSET atau tabel eksternal, Anda dapat menggunakan beberapa fungsi dan prosedur bawaan untuk memeriksa metadata file, menemukan skema, dan menerapkan kueri yang sadar partisi.
filepath() dan filename()
Fungsi filepath() dan filename() mengembalikan bagian dari jalur file atau nama file untuk setiap baris dalam tataan hasil. Mereka sangat berguna untuk:
Penghapusan partisi: Filter pada segmen folder (misalnya, partisi tahun/bulan/hari) sehingga mesin hanya membaca file yang cocok alih-alih memindai semuanya.
Mengekspos metadata sumber: Sertakan nama atau jalur file asal sebagai kolom dalam hasil kueri, yang berguna untuk audit atau penelusuran kesalahan.
| Fungsi | Pengembalian Barang | Example |
|---|---|---|
filename() |
Nama file (termasuk ekstensi) file sumber untuk setiap baris | sales_2025_01.parquet |
filepath(N) |
Segment folder ke-N dari wildcard (*) di jalur BULK, di mana N dimulai dari 1 |
Untuk jalur sales/2025/01/*.parquet, filepath(1) mengembalikan 2025, filepath(2) mengembalikan 01 |
Berlaku untuk: Azure SQL Database, Azure SQL Managed Instance, SQL Server 2022 (16.x) dan versi yang lebih baru, database SQL di Fabric.
Contoh kueri ini menggunakan filepath() untuk penghapusan partisi dan filename() untuk mengidentifikasi file sumber. Ini hanya membaca file di dalam folder /2025/, dan hanya membaca file di dalam subfolder /06/.
SELECT result.filename() AS SourceFile,
result.filepath(1) AS [Year],
result.filepath(2) AS [Month],
*
FROM OPENROWSET (
BULK 'abs://mycontainer@mystorageaccount.blob.core.windows.net/data/sales/*/*/*.parquet',
FORMAT = 'PARQUET'
) AS result
WHERE result.filepath(1) = '2025'
AND result.filepath(2) = '06';
Petunjuk / Saran
Letakkan filepath() pemfilteran dalam WHERE klausa daripada dalam subkueri atau CTE. Ketika filter berada dalam WHERE klausul, mesin dapat melakukan eliminasi partisi pada tingkat pemindaian file, yang secara signifikan mengurangi I/O.
sp_describe_first_result_set - cermati tipe kolom pada OPENROWSET
Saat Anda menggunakan OPENROWSET dengan file Parquet, mesin menyimpulkan jenis data kolom secara otomatis (inferensi skema). Jenis yang disimpulkan mungkin lebih besar dari yang diperlukan. Misalnya, kolom karakter sering disimpulkan sebagai varchar(8000) karena metadata Parquet tidak menyertakan panjang maksimum. Pilihan ini dapat menurunkan performa dan mengonsumsi lebih banyak memori.
Gunakan sp_describe_first_result_set untuk memeriksa skema yang disimpulkan sebelum Anda menyelesaikan kueri Anda. Setelah Anda melihat jenis yang disimpulkan, tentukan jenis yang lebih sempit pada bagian WITH untuk meningkatkan kinerja.
Langkah 1: Periksa skema yang disimpulkan.
EXECUTE sp_describe_first_result_set N' SELECT * FROM OPENROWSET( BULK ''abs://mycontainer@mystorageaccount.blob.core.windows.net/data/sales/*.parquet'', FORMAT = ''PARQUET'' ) AS result';Output menunjukkan nama setiap kolom, jenis data yang disimpulkan, panjang maksimum, presisi, dan skala. Jika Anda melihat varchar(8000) di mana varchar(100) sudah cukup, ambil alih:
Langkah 2: Gunakan jenis eksplisit untuk performa yang lebih baik.
SELECT TOP 100 * FROM OPENROWSET ( BULK 'abs://mycontainer@mystorageaccount.blob.core.windows.net/data/sales/*.parquet', FORMAT = 'PARQUET' ) WITH ( OrderId INT, OrderDate DATE, Amount DECIMAL (18, 2), Customer VARCHAR (100) -- much narrower than the inferred varchar(8000) ) AS result;
Inferensi skema hanya berfungsi dengan file Parquet. Untuk file CSV, selalu tentukan definisi kolom baik dalam WITH klausa (untuk OPENROWSET) atau dalam CREATE EXTERNAL TABLE pernyataan.
sp_describe_first_result_set adalah prosedur umum untuk SQL Server dan Azure SQL, namun sangat berguna untuk kueri OPENROWSET. Untuk informasi selengkapnya, lihat sp_describe_first_result_set.
Performa, pemecahan masalah, dan praktik terbaik
Setelah Anda menerapkan virtualisasi data, gunakan panduan ini untuk mengoptimalkan performa, mendiagnosis masalah, dan memastikan kesiapan produksi:
| Wilayah | Artikel | Rincian |
|---|---|---|
| Kinerja PolyBase | Pertimbangan performa di PolyBase untuk SQL Server | Statistik, pushdown, paralelisme, dan pengelolaan memori |
| Komputasi tumpukan | Komputasi pushdown di PolyBase | Menentukan operasi mana yang mengunggah ke sumber jarak jauh |
| Cara mengetahui apakah pushdown terjadi | Cara untuk mengetahui apakah terjadi dorongan eksternal | Rencana kueri dan DMV |
| Pemecahan masalah | Memantau dan memecahkan masalah PolyBase | Kesalahan dan resolusi umum |
| Konektivitas Kerberos | Memecahkan masalah konektivitas PolyBase Kerberos | |
| FAQ | Pertanyaan yang sering diajukan polyBase | |
| Kesalahan dan solusi | Kesalahan PolyBase dan kemungkinan solusi |