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 yang lebih baru
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics Analytics
Platform System (PDW)
Membuat sumber data eksternal untuk mengkueri data eksternal, yang digunakan untuk fitur PolyBase dan virtualisasi data.
Artikel ini menyediakan sintaks, argumen, keterangan, izin, dan contoh untuk produk SQL mana pun yang Anda pilih.
Pilih produk
Di baris berikut, pilih nama produk yang Anda minati, dan hanya informasi produk yang ditampilkan.
* SQL Server *
Azure Synapse
Analitik
Gambaran Umum: SQL Server 2016
Berlaku untuk: SQL Server 2016 (13.x)
Membuat sumber data eksternal untuk kueri PolyBase. Sumber data eksternal digunakan untuk membangun konektivitas dan mendukung kasus penggunaan utama ini:
- Virtualisasi data dan pemuatan data menggunakan PolyBase
- Operasi pemuatan massal menggunakan
BULK INSERT
atauOPENROWSET
Catatan
Sintaks ini bervariasi dalam versi SQL Server yang berbeda. Gunakan menu dropdown pemilih versi untuk memilih versi yang sesuai.
Untuk melihat fitur SQL Server 2019 (15.x), kunjungi CREATE EXTERNAL DATA SOURCE.
Untuk melihat fitur SQL Server 2022 (16.x), kunjungi CREATE EXTERNAL DATA SOURCE.
Sintaks untuk SQL Server 2016
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CREDENTIAL = <credential_name> ]
[ [ , ] TYPE = { HADOOP } ]
[ [ , ] RESOURCE_MANAGER_LOCATION = '<resource_manager>[:<port>]' )
[ ; ]
Argumen
data_source_name
Menentukan nama yang ditentukan pengguna untuk sumber data. Nama harus unik dalam database di SQL Server.
LOCATION = '<prefix>://<path[:p ort]>'
Menyediakan protokol dan jalur konektivitas ke sumber data eksternal.
Sumber Data Eksternal | Awalan lokasi konektor | Jalur lokasi | Lokasi yang didukung berdasarkan produk / layanan | Autentikasi |
---|---|---|---|---|
Cloudera CDH atau Hortonworks HDP | hdfs |
<Namenode>[:port] |
SQL Server 2016 (13.x) ke SQL Server 2019 (15.x) | Autentikasi anonim atau dasar |
Akun Azure Storage(V2) | wasb[s] |
<container>@<storage_account>.blob.core.windows.net |
Dimulai dengan SQL Server 2016 (13.x) Namespace Hierarkis tidak didukung |
Kunci akun Azure Storage |
Jalur lokasi:
-
<Namenode>
= nama mesin, URI layanan nama, atau alamatNamenode
IP di kluster Hadoop. PolyBase harus menyelesaikan nama DNS apa pun yang digunakan oleh kluster Hadoop. -
port
= Port yang didengarkan sumber data eksternal. Di Hadoop, port dapat ditemukan menggunakanfs.defaultFS
parameter konfigurasi. Defaultnya adalah 8020. -
<container>
= kontainer akun penyimpanan yang menyimpan data. Kontainer root bersifat baca-saja, data tidak dapat ditulis kembali ke kontainer. -
<storage_account>
= nama akun penyimpanan sumber daya Azure. -
<server_name>
= nama host. -
<instance_name>
= nama instans bernama SQL Server. Digunakan jika Anda memiliki SQL Server Browser Service yang berjalan pada instans target.
Catatan dan panduan tambahan saat mengatur lokasi:
- Mesin Database SQL Server tidak memverifikasi keberadaan sumber data eksternal saat objek dibuat. Untuk memvalidasi, buat tabel eksternal menggunakan sumber data eksternal.
- Gunakan sumber data eksternal yang sama untuk semua tabel saat mengkueri Hadoop untuk memastikan semantik kueri yang konsisten.
-
wasbs
bersifat opsional tetapi direkomendasikan di SQL Server 2016 (13.x) untuk mengakses Akun Azure Storage karena data akan dikirim menggunakan koneksi TLS/SSL yang aman. - Untuk memastikan kueri PolyBase yang berhasil selama fail-over Hadoop
Namenode
, pertimbangkan untuk menggunakan alamat IP virtual untukNamenode
kluster Hadoop. Jika tidak, jalankan UBAH SUMBER DATA EKSTERNAL untuk menunjuk ke lokasi baru.
INFO MASUK = credential_name
Menentukan kredensial cakupan database untuk mengautentikasi ke sumber data eksternal.
CREDENTIAL
hanya diperlukan jika data telah diamankan.
CREDENTIAL
tidak diperlukan untuk himpunan data yang memungkinkan akses anonim.
Untuk membuat kredensial lingkup database, lihat MEMBUAT KREDENSIAL CAKUPAN DATABASE (Transact-SQL).
TYPE = * [ HADOOP ] *
Menentukan jenis sumber data eksternal yang sedang dikonfigurasi. Di SQL Server 2016, parameter ini selalu diperlukan, dan hanya boleh ditentukan sebagai HADOOP
. Mendukung koneksi ke Cloudera CDH, Hortonworks HDP, atau akun Azure Storage. Perilaku parameter ini berbeda di versi SQL Server yang lebih baru.
Untuk contoh penggunaan TYPE
= HADOOP
untuk memuat data dari akun Azure Storage, lihat Membuat sumber data eksternal untuk mengakses data di Azure Storage menggunakan antarmuka wasb://
RESOURCE_MANAGER_LOCATION = 'ResourceManager_URI[:p ort]'
Konfigurasikan nilai opsional ini saat menyambungkan ke Cloudera CDH, Hortonworks HDP, atau akun Azure Storage saja. Untuk daftar lengkap versi Hadoop yang didukung, lihat Konfigurasi konektivitas PolyBase.
RESOURCE_MANAGER_LOCATION
Ketika ditentukan, pengoptimal kueri membuat keputusan berbasis biaya untuk meningkatkan performa. Pekerjaan MapReduce dapat digunakan untuk menurunkan komputasi ke Hadoop. Menentukan RESOURCE_MANAGER_LOCATION
dapat secara signifikan mengurangi volume data yang ditransfer antara Hadoop dan SQL Server, yang dapat menyebabkan peningkatan performa kueri.
Jika Resource Manager tidak ditentukan, mendorong komputasi ke Hadoop dinonaktifkan untuk kueri PolyBase. Buat sumber data eksternal untuk mereferensikan Hadoop dengan push-down diaktifkan memberikan contoh konkret dan panduan lebih lanjut.
Nilai RESOURCE_MANAGER_LOCATION tidak divalidasi saat Anda membuat sumber data eksternal. Memasukkan nilai yang salah dapat menyebabkan kegagalan kueri pada waktu eksekusi setiap kali push-down dicoba karena nilai yang disediakan tidak akan dapat diselesaikan.
Agar PolyBase berfungsi dengan benar dengan sumber data eksternal Hadoop, port untuk komponen kluster Hadoop berikut harus terbuka:
- Port HDFS
- Namenode
- Datanode
- Resource Manager
- Pengajuan Pekerjaan
- Riwayat pekerjaan
Jika port tidak ditentukan, nilai default dipilih menggunakan pengaturan saat ini untuk konfigurasi 'konektivitas hadoop'.
Konektivitas Hadoop | Default Resource Manager Port |
---|---|
1 |
50300 |
2 |
50300 |
3 |
8021 |
4 |
8032 |
5 |
8050 |
6 |
8032 |
7 |
8050 |
8 |
8032 |
Tabel berikut ini memperlihatkan port default untuk komponen-komponen ini. Ada dependensi versi Hadoop serta kemungkinan konfigurasi kustom yang tidak menggunakan penetapan port default.
Komponen kluster Hadoop | Port Default |
---|---|
NameNode | 8020 |
DataNode (Transfer data, port IPC non-hak istimewa) | 50010 |
DataNode (Transfer data, port IPC hak istimewa) | 1019 |
Pengiriman Pekerjaan Resource Manager (Hortonworks 1.3) | 50300 |
Pengiriman Pekerjaan Resource Manager (Cloudera 4.3) | 8021 |
Pengiriman Pekerjaan Resource Manager (Hortonworks 2.0 di Windows, Cloudera 5.x di Linux) | 8032 |
Pengiriman Pekerjaan Resource Manager (Hortonworks 2.x, 3.0 di Linux, Hortonworks 2.1-3 di Windows) | 8050 |
Riwayat Pekerjaan Resource Manager | 10020 |
Izin
CONTROL
Memerlukan izin pada database di SQL Server.
Penguncian
Mengambil kunci bersama pada EXTERNAL DATA SOURCE
objek.
Keamanan
PolyBase mendukung autentikasi berbasis proksi untuk sebagian besar sumber data eksternal. Buat kredensial lingkup database untuk membuat akun proksi.
Contoh
Penting
Untuk informasi tentang cara menginstal dan mengaktifkan PolyBase, lihat Menginstal PolyBase di Windows
J. Membuat sumber data eksternal untuk mereferensikan Hadoop
Untuk membuat sumber data eksternal untuk mereferensikan kluster Hortonworks HDP atau Cloudera CDH Hadoop Anda, tentukan nama mesin, atau alamat IP Hadoop Namenode
dan port.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
LOCATION = 'hdfs://10.10.10.10:8050',
TYPE = HADOOP
);
B. Membuat sumber data eksternal untuk mereferensikan Hadoop dengan push-down diaktifkan
RESOURCE_MANAGER_LOCATION
Tentukan opsi untuk mengaktifkan komputasi push-down ke Hadoop untuk kueri PolyBase. Setelah diaktifkan, PolyBase membuat keputusan berbasis biaya untuk menentukan apakah komputasi kueri harus didorong ke Hadoop.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
LOCATION = 'hdfs://10.10.10.10:8020',
TYPE = HADOOP,
RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);
C. Membuat sumber data eksternal untuk mereferensikan Hadoop yang diamankan Kerberos
Untuk memverifikasi apakah kluster Hadoop diamankan Kerberos, periksa nilai hadoop.security.authentication
properti di Hadoop core-site.xml. Untuk mereferensikan kluster Hadoop yang diamankan Kerberos, Anda harus menentukan kredensial cakupan database yang berisi nama pengguna dan kata sandi Kerberos Anda. Kunci master database digunakan untuk mengenkripsi rahasia kredensial lingkup database.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Kerberos user name and password.
CREATE DATABASE SCOPED CREDENTIAL HadoopUser1
WITH IDENTITY = '<hadoop_user_name>',
SECRET = '<hadoop_password>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
LOCATION = 'hdfs://10.10.10.10:8050',
CREDENTIAL = HadoopUser1,
TYPE = HADOOP,
RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);
D. Membuat sumber data eksternal untuk mengakses data di Azure Storage menggunakan antarmuka wasb://
Dalam contoh ini, sumber data eksternal adalah akun Azure V2 Storage bernama logs
. Kontainer penyimpanan disebut daily
. Sumber data eksternal Azure Storage hanya untuk transfer data. Ini tidak mendukung pendorongan predikat. Namespace hierarkis tidak didukung saat mengakses data melalui wasb://
antarmuka.
Contoh ini memperlihatkan cara membuat kredensial cakupan database untuk autentikasi ke akun Azure V2 Storage. Tentukan kunci akun Azure Storage dalam rahasia kredensial database. Anda dapat menentukan string apa pun dalam identitas kredensial lingkup database karena tidak digunakan selama autentikasi ke Azure Storage. Saat menyambungkan ke Azure Storage melalui wasb
atau wasbs
, autentikasi harus dilakukan dengan kunci akun penyimpanan, bukan dengan tanda tangan akses bersama (SAS).
Di SQL Server 2016 (13.x), TYPE
harus diatur ke HADOOP
bahkan saat mengakses Azure Storage.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH IDENTITY = '<my_account>',
SECRET = '<azure_storage_account_key>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
LOCATION = 'wasbs://daily@logs.blob.core.windows.net/',
CREDENTIAL = AzureStorageCredential,
TYPE = HADOOP
);
Konten terkait
Ringkasan: SQL Server 2017
Berlaku untuk: SQL Server 2017 (14.x)
Membuat sumber data eksternal untuk kueri PolyBase. Sumber data eksternal digunakan untuk membangun konektivitas dan mendukung kasus penggunaan utama ini:
- Virtualisasi data dan pemuatan data menggunakan PolyBase di SQL Server
- Operasi pemuatan massal menggunakan
BULK INSERT
atauOPENROWSET
Catatan
Sintaks ini bervariasi dalam versi SQL Server yang berbeda di Linux. Gunakan menu dropdown pemilih versi untuk memilih versi yang sesuai.
Untuk melihat fitur SQL Server 2019 (15.x), kunjungi CREATE EXTERNAL DATA SOURCE.
Untuk melihat fitur SQL Server 2022 (16.x), kunjungi CREATE EXTERNAL DATA SOURCE.
Catatan
Sintaks ini bervariasi dalam versi SQL Server yang berbeda. Gunakan menu dropdown pemilih versi untuk memilih versi yang sesuai.
Untuk melihat fitur SQL Server 2019 (15.x), kunjungi CREATE EXTERNAL DATA SOURCE.
Untuk melihat fitur SQL Server 2022 (16.x), kunjungi CREATE EXTERNAL DATA SOURCE.
Sintaks untuk SQL Server 2017
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CREDENTIAL = <credential_name> ]
[ [ , ] TYPE = { HADOOP | BLOB_STORAGE } ]
[ [ , ] RESOURCE_MANAGER_LOCATION = '<resource_manager>[:<port>]' )
[ ; ]
Argumen
data_source_name
Menentukan nama yang ditentukan pengguna untuk sumber data. Nama harus unik dalam database di SQL Server.
LOCATION = '<prefix>://<path[:p ort]>'
Menyediakan protokol dan jalur konektivitas ke sumber data eksternal.
Sumber Data Eksternal | Awalan lokasi konektor | Jalur lokasi | Lokasi yang didukung berdasarkan produk / layanan | Autentikasi |
---|---|---|---|---|
Cloudera CDH atau Hortonworks HDP | hdfs |
<Namenode>[:port] |
SQL Server 2016 (13.x) ke SQL Server 2019 (15.x) saja | Autentikasi anonim atau dasar |
Akun Azure Storage(V2) | wasb[s] |
<container>@<storage_account>.blob.core.windows.net |
Dimulai dengan SQL Server 2016 (13.x) Namespace Hierarkis tidak didukung |
Kunci akun Azure Storage |
Operasi Massal | https |
<storage_account>.blob.core.windows.net/<container> |
Dimulai dengan SQL Server 2017 (14.x) | Tanda Tangan Akses Bersama (SAS) |
Jalur lokasi:
-
<
Namenode>
= nama komputer, URI layanan nama, atau alamatNamenode
IP di kluster Hadoop. PolyBase harus menyelesaikan nama DNS apa pun yang digunakan oleh kluster Hadoop. -
port
= Port yang didengarkan sumber data eksternal. Di Hadoop, port dapat ditemukan menggunakanfs.defaultFS
parameter konfigurasi. Defaultnya adalah 8020. -
<container>
= kontainer akun penyimpanan yang menyimpan data. Kontainer root bersifat baca-saja, data tidak dapat ditulis kembali ke kontainer. -
<storage_account>
= nama akun penyimpanan sumber daya Azure. -
<server_name>
= nama host. -
<instance_name>
= nama instans bernama SQL Server. Digunakan jika Anda memiliki SQL Server Browser Service yang berjalan pada instans target.
Catatan dan panduan tambahan saat mengatur lokasi:
- Mesin Database SQL Server tidak memverifikasi keberadaan sumber data eksternal saat objek dibuat. Untuk memvalidasi, buat tabel eksternal menggunakan sumber data eksternal.
- Gunakan sumber data eksternal yang sama untuk semua tabel saat mengkueri Hadoop untuk memastikan semantik kueri yang konsisten.
- Tentukan
Driver={<Name of Driver>}
saat menyambungkan melaluiODBC
. -
wasbs
bersifat opsional tetapi direkomendasikan di SQL Server 2017 (14.x) untuk mengakses Akun Azure Storage karena data akan dikirim menggunakan koneksi TLS/SSL yang aman. - Untuk memastikan kueri PolyBase yang berhasil selama fail-over Hadoop
Namenode
, pertimbangkan untuk menggunakan alamat IP virtual untukNamenode
kluster Hadoop. Jika tidak, jalankan UBAH SUMBER DATA EKSTERNAL untuk menunjuk ke lokasi baru.
INFO MASUK = credential_name
Menentukan kredensial cakupan database untuk mengautentikasi ke sumber data eksternal.
Catatan dan panduan tambahan saat membuat kredensial:
-
CREDENTIAL
hanya diperlukan jika data telah diamankan.CREDENTIAL
tidak diperlukan untuk himpunan data yang memungkinkan akses anonim. -
TYPE
=BLOB_STORAGE
Ketika , kredensial harus dibuat menggunakanSHARED ACCESS SIGNATURE
sebagai identitas. -
TYPE
=BLOB_STORAGE
hanya diizinkan untuk operasi massal; Anda tidak dapat membuat tabel eksternal untuk sumber data eksternal denganTYPE
=BLOB_STORAGE
. - Saat menyambungkan ke Azure Storage melalui
wasb
atauwasbs
, autentikasi harus dilakukan dengan kunci akun penyimpanan, bukan dengan tanda tangan akses bersama (SAS). - Ketika
TYPE
=HADOOP
kredensial harus dibuat menggunakan kunci akun penyimpanan sebagaiSECRET
.
Ada beberapa cara untuk membuat tanda tangan akses bersama:
Anda dapat membuat token SAS dengan menavigasi ke portal Microsoft Azure -><Your_Storage_Account> -> Tanda tangan akses bersama -> Mengonfigurasi izin -> Hasilkan SAS dan string koneksi. Untuk informasi selengkapnya, lihat Membuat tanda tangan akses bersama.
Anda dapat membuat dan mengonfigurasi SAS dengan Azure Storage Explorer.
Anda dapat membuat token SAS secara terprogram melalui PowerShell, Azure CLI, .NET, dan REST API. Untuk informasi selengkapnya, lihat Berikan akses terbatas ke sumber daya Azure Storage menggunakan tanda tangan akses bersama (SAS).
Token SAS harus dikonfigurasi sebagai berikut:
- Ketika token SAS dihasilkan, token tersebut menyertakan tanda tanya ('?') di awal token. Kecualikan yang terdepan
?
saat dikonfigurasi sebagai SECRET. - Gunakan periode kedaluwarsa yang valid (semua tanggal dalam waktu UTC).
- Ketika token SAS dihasilkan, token tersebut menyertakan tanda tanya ('?') di awal token. Kecualikan yang terdepan
Berikan setidaknya izin baca pada file yang harus dimuat (misalnya
srt=o&sp=r
). Beberapa tanda tangan akses bersama dapat dibuat untuk kasus penggunaan yang berbeda. Izin harus diberikan sebagai berikut:Perbuatan Izin Membaca data dari file Bacalah Membaca data dari beberapa file dan subfolder Baca dan Daftar
Untuk contoh penggunaan CREDENTIAL
dengan SHARED ACCESS SIGNATURE
danTYPE
= BLOB_STORAGE
, lihat Membuat sumber data eksternal untuk menjalankan operasi massal dan mengambil data dari Azure Storage ke SQL Database
Untuk membuat kredensial lingkup database, lihat MEMBUAT KREDENSIAL CAKUPAN DATABASE (Transact-SQL).
TYPE = * [ HADOOP | BLOB_STORAGE ] *
Menentukan jenis sumber data eksternal yang sedang dikonfigurasi. Parameter ini tidak selalu diperlukan, dan hanya boleh ditentukan saat menyambungkan ke Cloudera CDH, Hortonworks HDP, akun Azure Storage, atau Azure Data Lake Storage Gen2.
- Gunakan
HADOOP
saat sumber data eksternal adalah Cloudera CDH, Hortonworks HDP, akun Azure Storage, atau Azure Data Lake Storage Gen2. - Gunakan
BLOB_STORAGE
saat menjalankan operasi massal dari akun Azure Storage menggunakan BULK INSERT atau OPENROWSET. Diperkenalkan dengan SQL Server 2017 (14.x). GunakanHADOOP
saat berniat melawanCREATE EXTERNAL TABLE
Azure Storage.
Catatan
TYPE
harus diatur ke HADOOP
bahkan saat mengakses Azure Storage.
Untuk contoh penggunaan TYPE
= HADOOP
untuk memuat data dari akun Azure Storage, lihat Membuat sumber data eksternal untuk mengakses data di Azure Storage menggunakan antarmuka wasb://
RESOURCE_MANAGER_LOCATION = 'ResourceManager_URI[:p ort]'
Konfigurasikan nilai opsional ini saat menyambungkan ke Cloudera CDH, Hortonworks HDP, atau akun Azure Storage saja. Untuk daftar lengkap versi Hadoop yang didukung, lihat Konfigurasi konektivitas PolyBase (Transact-SQL).
RESOURCE_MANAGER_LOCATION
Ketika ditentukan, pengoptimal kueri akan membuat keputusan berbasis biaya untuk meningkatkan performa. Pekerjaan MapReduce dapat digunakan untuk menurunkan komputasi ke Hadoop. Menentukan RESOURCE_MANAGER_LOCATION
dapat secara signifikan mengurangi volume data yang ditransfer antara Hadoop dan SQL Server, yang dapat menyebabkan peningkatan performa kueri.
Jika Resource Manager tidak ditentukan, mendorong komputasi ke Hadoop dinonaktifkan untuk kueri PolyBase. Buat sumber data eksternal untuk mereferensikan Hadoop dengan push-down diaktifkan memberikan contoh konkret dan panduan lebih lanjut.
Nilai RESOURCE_MANAGER_LOCATION
tidak divalidasi saat Anda membuat sumber data eksternal. Memasukkan nilai yang salah dapat menyebabkan kegagalan kueri pada waktu eksekusi setiap kali push-down dicoba karena nilai yang disediakan tidak akan dapat diselesaikan.
Agar PolyBase berfungsi dengan benar dengan sumber data eksternal Hadoop, port untuk komponen kluster Hadoop berikut harus terbuka:
- Port HDFS
- Namenode
- Datanode
- Resource Manager
- Pengajuan Pekerjaan
- Riwayat pekerjaan
Jika port tidak ditentukan, nilai default dipilih menggunakan pengaturan saat ini untuk konfigurasi 'konektivitas hadoop'.
Konektivitas Hadoop | Default Resource Manager Port |
---|---|
1 |
50300 |
2 |
50300 |
3 |
8021 |
4 |
8032 |
5 |
8050 |
6 |
8032 |
7 |
8050 |
8 |
8032 |
Tabel berikut ini memperlihatkan port default untuk komponen-komponen ini. Ada dependensi versi Hadoop serta kemungkinan konfigurasi kustom yang tidak menggunakan penetapan port default.
Komponen kluster Hadoop | Port Default |
---|---|
NameNode | 8020 |
DataNode (Transfer data, port IPC non-hak istimewa) | 50010 |
DataNode (Transfer data, port IPC hak istimewa) | 1019 |
Pengiriman Pekerjaan Resource Manager (Hortonworks 1.3) | 50300 |
Pengiriman Pekerjaan Resource Manager (Cloudera 4.3) | 8021 |
Pengiriman Pekerjaan Resource Manager (Hortonworks 2.0 di Windows, Cloudera 5.x di Linux) | 8032 |
Pengiriman Pekerjaan Resource Manager (Hortonworks 2.x, 3.0 di Linux, Hortonworks 2.1-3 di Windows) | 8050 |
Riwayat Pekerjaan Resource Manager | 10020 |
Izin
CONTROL
Memerlukan izin pada database di SQL Server.
Penguncian
Mengambil kunci bersama pada EXTERNAL DATA SOURCE
objek.
Keamanan
PolyBase mendukung autentikasi berbasis proksi untuk sebagian besar sumber data eksternal. Buat kredensial lingkup database untuk membuat akun proksi.
Token SAS dengan jenis HADOOP
tidak didukung. Ini hanya didukung dengan jenis = BLOB_STORAGE
ketika kunci akses akun penyimpanan digunakan sebagai gantinya. Mencoba membuat sumber data eksternal dengan jenis HADOOP
dan kredensial SAS gagal dengan kesalahan berikut:
Msg 105019, Level 16, State 1 - EXTERNAL TABLE access failed due to internal error: 'Java exception raised on call to HdfsBridge_Connect. Java exception message: Parameters provided to connect to the Azure storage account are not valid.: Error [Parameters provided to connect to the Azure storage account are not valid.] occurred while accessing external file.'
Contoh
Penting
Untuk informasi tentang cara menginstal dan mengaktifkan PolyBase, lihat Menginstal PolyBase di Windows
J. Membuat sumber data eksternal untuk mereferensikan Hadoop
Untuk membuat sumber data eksternal untuk mereferensikan kluster Hortonworks HDP atau Cloudera CDH Hadoop Anda, tentukan nama mesin, atau alamat IP Hadoop Namenode
dan port.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
LOCATION = 'hdfs://10.10.10.10:8050',
TYPE = HADOOP
);
B. Membuat sumber data eksternal untuk mereferensikan Hadoop dengan push-down diaktifkan
RESOURCE_MANAGER_LOCATION
Tentukan opsi untuk mengaktifkan komputasi push-down ke Hadoop untuk kueri PolyBase. Setelah diaktifkan, PolyBase membuat keputusan berbasis biaya untuk menentukan apakah komputasi kueri harus didorong ke Hadoop.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
LOCATION = 'hdfs://10.10.10.10:8020',
TYPE = HADOOP,
RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);
C. Membuat sumber data eksternal untuk mereferensikan Hadoop yang diamankan Kerberos
Untuk memverifikasi apakah kluster Hadoop diamankan Kerberos, periksa nilai hadoop.security.authentication
properti di Hadoop core-site.xml. Untuk mereferensikan kluster Hadoop yang diamankan Kerberos, Anda harus menentukan kredensial cakupan database yang berisi nama pengguna dan kata sandi Kerberos Anda. Kunci master database digunakan untuk mengenkripsi rahasia kredensial lingkup database.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Kerberos user name and password.
CREATE DATABASE SCOPED CREDENTIAL HadoopUser1
WITH IDENTITY = '<hadoop_user_name>',
SECRET = '<hadoop_password>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
LOCATION = 'hdfs://10.10.10.10:8050',
CREDENTIAL = HadoopUser1,
TYPE = HADOOP,
RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);
D. Membuat sumber data eksternal untuk mengakses data di Azure Storage menggunakan antarmuka wasb://
Dalam contoh ini, sumber data eksternal adalah akun Azure V2 Storage bernama logs
. Kontainer penyimpanan disebut daily
. Sumber data eksternal Azure Storage hanya untuk transfer data. Ini tidak mendukung pendorongan predikat. Namespace hierarkis tidak didukung saat mengakses data melalui wasb://
antarmuka. Saat menyambungkan ke Azure Storage melalui wasb
atau wasbs
, autentikasi harus dilakukan dengan kunci akun penyimpanan, bukan dengan tanda tangan akses bersama (SAS).
Contoh ini memperlihatkan cara membuat kredensial cakupan database untuk autentikasi ke akun Azure V2 Storage. Tentukan kunci akun Azure Storage dalam rahasia kredensial database. Anda dapat menentukan string apa pun dalam identitas kredensial lingkup database karena tidak digunakan selama autentikasi ke Azure Storage.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH IDENTITY = '<my_account>',
SECRET = '<azure_storage_account_key>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
LOCATION = 'wasbs://daily@logs.blob.core.windows.net/',
CREDENTIAL = AzureStorageCredential,
TYPE = HADOOP
);
Contoh: Operasi massal
Penting
Jangan tambahkan /parameter tanda tangan akses berikutnya, nama file, atau tanda tangan akses bersama di akhir LOCATION
URL saat mengonfigurasi sumber data eksternal untuk operasi massal.
E. Membuat sumber data eksternal untuk operasi massal yang mengambil data dari Azure Storage
Berlaku untuk: SQL Server 2017 (14.x) dan versi yang lebih baru.
Gunakan sumber data berikut untuk operasi massal menggunakan BULK INSERT atau OPENROWSET. Kredensial harus ditetapkan SHARED ACCESS SIGNATURE
sebagai identitas, tidak boleh memiliki yang terdepan ?
dalam token SAS, harus memiliki setidaknya izin baca pada file yang harus dimuat (misalnya srt=o&sp=r
), dan periode kedaluwarsa harus valid (semua tanggal dalam waktu UTC). Untuk informasi selengkapnya tentang tanda tangan akses bersama, lihat Menggunakan Tanda Tangan Akses Bersama (SAS).
CREATE DATABASE SCOPED CREDENTIAL AccessAzureInvoices
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
-- Remove ? from the beginning of the SAS token
SECRET = '<azure_storage_account_key>';
CREATE EXTERNAL DATA SOURCE MyAzureInvoices
WITH (
LOCATION = 'https://newinvoices.blob.core.windows.net/week3',
CREDENTIAL = AccessAzureInvoices,
TYPE = BLOB_STORAGE
);
Untuk melihat contoh ini sedang digunakan, lihat SISIPAN MASSAL.
Konten terkait
Ringkasan: SQL Server 2019
Berlaku untuk: SQL Server 2019 (15.x)
Membuat sumber data eksternal untuk kueri PolyBase. Sumber data eksternal digunakan untuk membangun konektivitas dan mendukung kasus penggunaan utama ini:
- Virtualisasi data dan pemuatan data menggunakan PolyBase di SQL Server
- Operasi pemuatan massal menggunakan
BULK INSERT
atauOPENROWSET
Catatan
Sintaks ini bervariasi dalam versi SQL Server yang berbeda. Gunakan menu dropdown pemilih versi untuk memilih versi yang sesuai.
Untuk melihat fitur SQL Server 2022 (16.x), kunjungi CREATE EXTERNAL DATA SOURCE.
Catatan
Sintaks ini bervariasi dalam versi SQL Server yang berbeda. Gunakan menu dropdown pemilih versi untuk memilih versi yang sesuai.
Untuk melihat fitur SQL Server 2022 (16.x), kunjungi CREATE EXTERNAL DATA SOURCE.
Sintaks untuk SQL Server 2019
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CONNECTION_OPTIONS = '<key_value_pairs>'[,...]]
[ [ , ] CREDENTIAL = <credential_name> ]
[ [ , ] PUSHDOWN = { ON | OFF } ]
[ [ , ] TYPE = { HADOOP | BLOB_STORAGE } ]
[ [ , ] RESOURCE_MANAGER_LOCATION = '<resource_manager>[:<port>]' ]
)
[ ; ]
Argumen
data_source_name
Menentukan nama yang ditentukan pengguna untuk sumber data. Nama harus unik dalam database di SQL Server.
LOCATION = '<prefix>://<path[:p ort]>'
Menyediakan protokol dan jalur konektivitas ke sumber data eksternal.
Sumber Data Eksternal | Awalan lokasi konektor | Jalur lokasi | Lokasi yang didukung berdasarkan produk / layanan | Autentikasi |
---|---|---|---|---|
Cloudera CDH atau Hortonworks HDP | hdfs |
<Namenode>[:port] |
SQL Server 2016 (13.x) ke SQL Server 2019 (15.x) | Autentikasi anonim atau dasar |
Akun Azure Storage(V2) | wasb[s] |
<container>@<storage_account>.blob.core.windows.net |
Dimulai dengan SQL Server 2016 (13.x) Namespace Hierarkis tidak didukung |
Kunci akun Azure Storage |
SQL Server | sqlserver |
<server_name>[\<instance_name>][:port] |
Dimulai dengan SQL Server 2019 (15.x) | Autentikasi SQL saja |
Oracle | oracle |
<server_name>[:port] |
Dimulai dengan SQL Server 2019 (15.x) | Autentikasi dasar saja |
Teradata | teradata |
<server_name>[:port] |
Dimulai dengan SQL Server 2019 (15.x) | Autentikasi dasar saja |
MongoDB atau Cosmos DB API untuk MongoDB | mongodb |
<server_name>[:port] |
Dimulai dengan SQL Server 2019 (15.x) | Autentikasi dasar saja |
Konektivitas Database Terbuka Generik | odbc |
<server_name>[:port] |
Dimulai dengan SQL Server 2019 (15.x) - Hanya Windows | Autentikasi dasar saja |
Operasi Massal | https |
<storage_account>.blob.core.windows.net/<container> |
Dimulai dengan SQL Server 2017 (14.x) | Tanda Tangan Akses Bersama (SAS) |
Azure Data Lake Storage Gen2 | abfs[s] |
abfss://<container>@<storage _account>.dfs.core.windows.net |
Dimulai dengan SQL Server 2019 (15.x) CU11+. | Kunci Akses Storage |
Kumpulan data Kluster Big Data SQL Server | sqldatapool |
sqldatapool://controller-svc/default |
Hanya didukung di Kluster Big Data SQL Server 2019 | Autentikasi dasar saja |
Kumpulan penyimpanan Kluster Big Data SQL Server | sqlhdfs |
sqlhdfs://controller-svc/default |
Hanya didukung di Kluster Big Data SQL Server 2019 | Autentikasi dasar saja |
Jalur lokasi:
-
<Namenode>
= nama mesin, URI layanan nama, atau alamatNamenode
IP di kluster Hadoop. PolyBase harus menyelesaikan nama DNS apa pun yang digunakan oleh kluster Hadoop. -
port
= Port yang didengarkan sumber data eksternal. Di Hadoop, port dapat ditemukan menggunakanfs.defaultFS
parameter konfigurasi. Defaultnya adalah 8020. -
<container>
= kontainer akun penyimpanan yang menyimpan data. Kontainer root bersifat baca-saja, data tidak dapat ditulis kembali ke kontainer. -
<storage_account>
= nama akun penyimpanan sumber daya Azure. -
<server_name>
= nama host. -
<instance_name>
= nama instans bernama SQL Server. Digunakan jika Anda memiliki SQL Server Browser Service yang berjalan pada instans target.
Catatan dan panduan tambahan saat mengatur lokasi:
- Mesin Database SQL Server tidak memverifikasi keberadaan sumber data eksternal saat objek dibuat. Untuk memvalidasi, buat tabel eksternal menggunakan sumber data eksternal.
- Gunakan sumber data eksternal yang sama untuk semua tabel saat mengkueri Hadoop untuk memastikan semantik kueri yang konsisten.
- Anda dapat menggunakan
sqlserver
konektor untuk menyambungkan SQL Server 2019 (15.x) ke SQL Server lain, atau ke Azure SQL Database. - Tentukan
Driver={<Name of Driver>}
saat menyambungkan melaluiODBC
. - Menggunakan
wasbs
atauabfss
bersifat opsional tetapi direkomendasikan di SQL Server 2019 (15.x) untuk mengakses Akun Azure Storage karena data akan dikirim menggunakan koneksi TLS/SSL yang aman. -
abfs
API atauabfss
didukung saat mengakses Akun Azure Storage yang dimulai dengan SQL Server 2019 (15.x) CU11. Untuk informasi selengkapnya, lihat driver Azure Blob Filesystem (ABFS). - Opsi Namespace Hierarkis untuk Akun Penyimpanan Azure (V2) yang menggunakan
abfs[s]
didukung melalui Azure Data Lake Storage Gen2 dimulai dengan SQL Server 2019 (15.x) CU11+. Opsi Namespace Hierarkis tidak didukung, dan opsi ini harus tetap dinonaktifkan. - Untuk memastikan kueri PolyBase yang berhasil selama fail-over Hadoop
Namenode
, pertimbangkan untuk menggunakan alamat IP virtual untukNamenode
kluster Hadoop. Jika tidak, jalankan UBAH SUMBER DATA EKSTERNAL untuk menunjuk ke lokasi baru. - Jenis
sqlhdfs
dansqldatapool
didukung untuk menyambungkan antara instans master dan kumpulan penyimpanan kluster big data. Untuk Cloudera CDH atau Hortonworks HDP, gunakanhdfs
. Untuk informasi selengkapnya tentang penggunaansqlhdfs
untuk mengkueri kumpulan penyimpanan Kluster Big Data SQL Server, lihat Mengkueri HDFS di Kluster Big Data SQL Server 2019. - Dukungan SQL Server untuk sumber data eksternal HDFS Cloudera (CDP) dan Hortonworks (HDP) telah dihentikan, dan tidak termasuk dalam SQL Server 2022 (16.x) dan versi yang lebih baru. Untuk informasi selengkapnya, lihat Opsi big data di platform Microsoft SQL Server.
CONNECTION_OPTIONS = key_value_pair
Ditentukan untuk SQL Server 2019 (15.x) dan versi yang lebih baru. Menentukan opsi tambahan saat menyambungkan ODBC
ke sumber data eksternal. Untuk menggunakan beberapa opsi koneksi, pisahkan dengan titik koma.
Berlaku untuk koneksi generik ODBC
, serta konektor bawaan ODBC
untuk SQL Server, Oracle, Teradata, MongoDB, dan Azure Cosmos DB API untuk MongoDB.
key_value_pair
adalah kata kunci dan nilai untuk opsi koneksi tertentu. Kata kunci dan nilai yang tersedia bergantung pada jenis sumber data eksternal. Nama driver diperlukan sebagai minimum, tetapi ada opsi lain seperti APP='<your_application_name>'
atau ApplicationIntent= ReadOnly|ReadWrite
yang juga berguna untuk diatur dan dapat membantu pemecahan masalah.
Pasangan nilai kunci yang mungkin khusus untuk penyedia untuk vendor sumber data eksternal. Untuk informasi selengkapnya untuk setiap penyedia, lihat MEMBUAT SUMBER DATA EKSTERNAL (Transact-SQL) CONNECTION_OPTIONS.
Mulai SQL Server 2019 (15.x) Pembaruan Kumulatif 19, kata kunci tambahan diperkenalkan untuk mendukung file Oracle TNS:
- Kata kunci
TNSNamesFile
menentukan jalur file ke file yangtnsnames.ora
terletak di server Oracle. - Kata kunci
ServerName
menentukan alias yang digunakan di dalamtnsnames.ora
yang akan digunakan untuk mengganti nama host dan port.
Pushdown = AKTIF | OFF
Ditentukan hanya untuk SQL Server 2019 (15.x). Menyatakan apakah komputasi dapat didorong ke sumber data eksternal. Ini aktif secara default.
PUSHDOWN
didukung saat menyambungkan ke SQL Server, Oracle, Teradata, MongoDB, API Azure Cosmos DB untuk MongoDB, atau ODBC di tingkat sumber data eksternal.
Mengaktifkan atau menonaktifkan push-down di tingkat kueri dicapai melalui petunjuk EXTERNALPUSHDOWN.
INFO MASUK = credential_name
Menentukan kredensial cakupan database untuk mengautentikasi ke sumber data eksternal.
Catatan dan panduan tambahan saat membuat kredensial:
-
CREDENTIAL
hanya diperlukan jika data telah diamankan.CREDENTIAL
tidak diperlukan untuk himpunan data yang memungkinkan akses anonim. -
TYPE
=BLOB_STORAGE
Ketika , kredensial harus dibuat menggunakanSHARED ACCESS SIGNATURE
sebagai identitas. -
TYPE
=BLOB_STORAGE
hanya diizinkan untuk operasi massal; Anda tidak dapat membuat tabel eksternal untuk sumber data eksternal denganTYPE
=BLOB_STORAGE
.
Ada beberapa cara untuk membuat tanda tangan akses bersama:
Anda dapat membuat token SAS dengan menavigasi ke portal Microsoft Azure -><Your_Storage_Account> -> Tanda tangan akses bersama -> Mengonfigurasi izin -> Hasilkan SAS dan string koneksi. Untuk informasi selengkapnya, lihat Membuat tanda tangan akses bersama.
Anda dapat membuat dan mengonfigurasi SAS dengan Azure Storage Explorer.
Anda dapat membuat token SAS secara terprogram melalui PowerShell, Azure CLI, .NET, dan REST API. Untuk informasi selengkapnya, lihat Berikan akses terbatas ke sumber daya Azure Storage menggunakan tanda tangan akses bersama (SAS).
Token SAS harus dikonfigurasi sebagai berikut:
- Ketika token SAS dihasilkan, token tersebut menyertakan tanda tanya ('?') di awal token. Kecualikan yang terdepan
?
saat dikonfigurasi sebagai SECRET. - Gunakan periode kedaluwarsa yang valid (semua tanggal dalam waktu UTC).
- Ketika token SAS dihasilkan, token tersebut menyertakan tanda tanya ('?') di awal token. Kecualikan yang terdepan
Berikan setidaknya izin baca pada file yang harus dimuat (misalnya
srt=o&sp=r
). Beberapa tanda tangan akses bersama dapat dibuat untuk kasus penggunaan yang berbeda. Izin harus diberikan sebagai berikut:Perbuatan Izin Membaca data dari file Bacalah Membaca data dari beberapa file dan subfolder Baca dan Daftar
Untuk contoh penggunaan CREDENTIAL
dengan SHARED ACCESS SIGNATURE
danTYPE
= BLOB_STORAGE
, lihat Membuat sumber data eksternal untuk menjalankan operasi massal dan mengambil data dari Azure Storage ke SQL Database
Untuk membuat kredensial lingkup database, lihat MEMBUAT KREDENSIAL CAKUPAN DATABASE (Transact-SQL).
TYPE = * [ HADOOP | BLOB_STORAGE ] *
Menentukan jenis sumber data eksternal yang sedang dikonfigurasi. Parameter ini tidak selalu diperlukan, dan hanya boleh ditentukan saat menyambungkan ke Cloudera CDH, Hortonworks HDP, akun Azure Storage, atau Azure Data Lake Storage Gen2.
- Di SQL Server 2019 (15.x), jangan tentukan TYPE kecuali menyambungkan ke Cloudera CDH, Hortonworks HDP, akun Azure Storage.
- Gunakan
HADOOP
saat sumber data eksternal adalah Cloudera CDH, Hortonworks HDP, akun Azure Storage, atau Azure Data Lake Storage Gen2. - Gunakan
BLOB_STORAGE
saat menjalankan operasi massal dari akun Azure Storage menggunakan BULK INSERT, atau OPENROWSET dengan SQL Server 2017 (14.x). GunakanHADOOP
saat ingin MEMBUAT TABEL EKSTERNAL terhadap Azure Storage. - Dukungan SQL Server untuk sumber data eksternal HDFS Cloudera (CDP) dan Hortonworks (HDP) telah dihentikan, dan tidak termasuk dalam SQL Server 2022 (16.x) dan versi yang lebih baru. Untuk informasi selengkapnya, lihat Opsi big data di platform Microsoft SQL Server.
Untuk contoh penggunaan TYPE
= HADOOP
untuk memuat data dari akun Azure Storage, lihat Membuat sumber data eksternal untuk mengakses data di Azure Storage menggunakan antarmuka wasb://.
RESOURCE_MANAGER_LOCATION = 'ResourceManager_URI[:p ort]'
Di SQL Server 2019 (15.x), jangan tentukan RESOURCE_MANAGER_LOCATION kecuali menyambungkan ke Cloudera CDH, Hortonworks HDP, akun Azure Storage.
Konfigurasikan nilai opsional ini saat menyambungkan ke Cloudera CDH, Hortonworks HDP, atau akun Azure Storage saja. Untuk daftar lengkap versi Hadoop yang didukung, lihat Konfigurasi konektivitas PolyBase.
RESOURCE_MANAGER_LOCATION
Ketika ditentukan, pengoptimal kueri membuat keputusan berbasis biaya untuk meningkatkan performa. Pekerjaan MapReduce dapat digunakan untuk menurunkan komputasi ke Hadoop. Menentukan RESOURCE_MANAGER_LOCATION
dapat secara signifikan mengurangi volume data yang ditransfer antara Hadoop dan SQL Server, yang dapat menyebabkan peningkatan performa kueri.
Jika Resource Manager tidak ditentukan, mendorong komputasi ke Hadoop dinonaktifkan untuk kueri PolyBase. Buat sumber data eksternal untuk mereferensikan Hadoop dengan push-down diaktifkan memberikan contoh konkret dan panduan lebih lanjut.
Nilai RESOURCE_MANAGER_LOCATION tidak divalidasi saat Anda membuat sumber data eksternal. Memasukkan nilai yang salah dapat menyebabkan kegagalan kueri pada waktu eksekusi setiap kali push-down dicoba karena nilai yang disediakan tidak akan dapat diselesaikan.
Agar PolyBase berfungsi dengan benar dengan sumber data eksternal Hadoop, port untuk komponen kluster Hadoop berikut harus terbuka:
- Port HDFS
- Namenode
- Datanode
- Resource Manager
- Pengajuan Pekerjaan
- Riwayat pekerjaan
Jika port tidak ditentukan, nilai default dipilih menggunakan pengaturan saat ini untuk konfigurasi 'konektivitas hadoop'.
Konektivitas Hadoop | Default Resource Manager Port |
---|---|
1 |
50300 |
2 |
50300 |
3 |
8021 |
4 |
8032 |
5 |
8050 |
6 |
8032 |
7 |
8050 |
8 |
8032 |
Tabel berikut ini memperlihatkan port default untuk komponen-komponen ini. Ada dependensi versi Hadoop serta kemungkinan konfigurasi kustom yang tidak menggunakan penetapan port default.
Komponen kluster Hadoop | Port Default |
---|---|
NameNode | 8020 |
DataNode (Transfer data, port IPC non-hak istimewa) | 50010 |
DataNode (Transfer data, port IPC hak istimewa) | 1019 |
Pengiriman Pekerjaan Resource Manager (Hortonworks 1.3) | 50300 |
Pengiriman Pekerjaan Resource Manager (Cloudera 4.3) | 8021 |
Pengiriman Pekerjaan Resource Manager (Hortonworks 2.0 di Windows, Cloudera 5.x di Linux) | 8032 |
Pengiriman Pekerjaan Resource Manager (Hortonworks 2.x, 3.0 di Linux, Hortonworks 2.1-3 di Windows) | 8050 |
Riwayat Pekerjaan Resource Manager | 10020 |
Izin
CONTROL
Memerlukan izin pada database di SQL Server.
Penguncian
Mengambil kunci bersama pada EXTERNAL DATA SOURCE
objek.
Keamanan
PolyBase mendukung autentikasi berbasis proksi untuk sebagian besar sumber data eksternal. Buat kredensial lingkup database untuk membuat akun proksi.
Saat Anda terhubung ke penyimpanan atau kumpulan data di Kluster Big Data SQL Server 2019, kredensial pengguna diteruskan ke sistem back-end. Buat login di kumpulan data itu sendiri untuk mengaktifkan autentikasi pass through.
Token SAS dengan jenis HADOOP
tidak didukung. Ini hanya didukung dengan jenis = BLOB_STORAGE
ketika kunci akses akun penyimpanan digunakan sebagai gantinya. Mencoba membuat sumber data eksternal dengan jenis HADOOP
dan kredensial SAS gagal dengan kesalahan berikut:
Msg 105019, Level 16, State 1 - EXTERNAL TABLE access failed due to internal error: 'Java exception raised on call to HdfsBridge_Connect. Java exception message: Parameters provided to connect to the Azure storage account are not valid.: Error [Parameters provided to connect to the Azure storage account are not valid.] occurred while accessing external file.'
Contoh
Penting
Untuk informasi tentang cara menginstal dan mengaktifkan PolyBase, lihat Menginstal PolyBase di Windows
J. Membuat sumber data eksternal di SQL Server 2019 untuk mereferensikan Oracle
Untuk membuat sumber data eksternal yang mereferensikan Oracle, pastikan Anda memiliki kredensial lingkup database. Anda mungkin juga secara opsional mengaktifkan atau menonaktifkan push-down komputasi terhadap sumber data ini.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL OracleProxyAccount
WITH IDENTITY = 'oracle_username',
SECRET = 'oracle_password';
CREATE EXTERNAL DATA SOURCE MyOracleServer
WITH (
LOCATION = 'oracle://145.145.145.145:1521',
CREDENTIAL = OracleProxyAccount,
PUSHDOWN = ON
);
Secara opsional, sumber data eksternal ke Oracle dapat menggunakan autentikasi proksi untuk memberikan kontrol akses butir halus. Pengguna proksi dapat dikonfigurasi untuk memiliki akses terbatas dibandingkan dengan pengguna yang ditiru.
CREATE DATABASE SCOPED CREDENTIAL [OracleProxyCredential]
WITH IDENTITY = 'oracle_username',
SECRET = 'oracle_password';
CREATE EXTERNAL DATA SOURCE [OracleSalesSrvr]
WITH (
LOCATION = 'oracle://145.145.145.145:1521',
CONNECTION_OPTIONS = 'ImpersonateUser=%CURRENT_USER',
CREDENTIAL = [OracleProxyCredential]
);
Atau, Anda dapat menggunakan autentikasi TNS.
Mulai SQL Server 2019 (15.x) Pembaruan Kumulatif 19, CREATE EXTERNAL DATA SOURCE
sekarang mendukung penggunaan file TNS saat menyambungkan ke Oracle.
Parameter CONNECTION_OPTIONS
diperluas dan sekarang menggunakan TNSNamesFile
dan ServerName
sebagai variabel untuk menelusuri tnsnames.ora
file dan membangun koneksi dengan server.
Dalam contoh di bawah ini, selama runtime SQL Server akan mencari tnsnames.ora
lokasi file yang ditentukan oleh TNSNamesFile
dan mencari host dan port jaringan yang ditentukan oleh ServerName
.
CREATE EXTERNAL DATA SOURCE [external_data_source_name]
WITH (
LOCATION = N'oracle://XE',
CREDENTIAL = [OracleCredentialTest],
CONNECTION_OPTIONS = N'TNSNamesFile=C:\Temp\tnsnames.ora;ServerName=XE'
);
Untuk contoh tambahan ke sumber data lain seperti MongoDB, lihat Mengonfigurasi PolyBase untuk mengakses data eksternal di MongoDB.
B. Membuat sumber data eksternal untuk mereferensikan Hadoop
Untuk membuat sumber data eksternal untuk mereferensikan kluster Hortonworks HDP atau Cloudera CDH Hadoop Anda, tentukan nama mesin, atau alamat IP Hadoop Namenode
dan port.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
LOCATION = 'hdfs://10.10.10.10:8050',
TYPE = HADOOP
);
C. Membuat sumber data eksternal untuk mereferensikan Hadoop dengan push-down diaktifkan
RESOURCE_MANAGER_LOCATION
Tentukan opsi untuk mengaktifkan komputasi push-down ke Hadoop untuk kueri PolyBase. Setelah diaktifkan, PolyBase membuat keputusan berbasis biaya untuk menentukan apakah komputasi kueri harus didorong ke Hadoop.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
LOCATION = 'hdfs://10.10.10.10:8020',
TYPE = HADOOP,
RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);
D. Membuat sumber data eksternal untuk mereferensikan Hadoop yang diamankan Kerberos
Untuk memverifikasi apakah kluster Hadoop diamankan Kerberos, periksa nilai hadoop.security.authentication
properti di Hadoop core-site.xml. Untuk mereferensikan kluster Hadoop yang diamankan Kerberos, Anda harus menentukan kredensial cakupan database yang berisi nama pengguna dan kata sandi Kerberos Anda. Kunci master database digunakan untuk mengenkripsi rahasia kredensial lingkup database.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Kerberos user name and password.
CREATE DATABASE SCOPED CREDENTIAL HadoopUser1
WITH IDENTITY = '<hadoop_user_name>',
SECRET = '<hadoop_password>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
LOCATION = 'hdfs://10.10.10.10:8050',
CREDENTIAL = HadoopUser1,
TYPE = HADOOP,
RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);
E. Membuat sumber data eksternal untuk mengakses data di Azure Storage menggunakan antarmuka wasb://
Dalam contoh ini, sumber data eksternal adalah akun Azure V2 Storage bernama logs
. Kontainer penyimpanan disebut daily
. Sumber data eksternal Azure Storage hanya untuk transfer data. Ini tidak mendukung pendorongan predikat. Namespace hierarkis tidak didukung saat mengakses data melalui wasb://
antarmuka. Saat menyambungkan ke Azure Storage melalui wasb
atau wasbs
, autentikasi harus dilakukan dengan kunci akun penyimpanan, bukan dengan tanda tangan akses bersama (SAS).
Contoh ini memperlihatkan cara membuat kredensial cakupan database untuk autentikasi ke akun Azure V2 Storage. Tentukan kunci akun Azure Storage dalam rahasia kredensial database. Anda dapat menentukan string apa pun dalam identitas kredensial lingkup database karena tidak digunakan selama autentikasi ke Azure Storage.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH IDENTITY = '<my_account>',
SECRET = '<azure_storage_account_key>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
LOCATION = 'wasbs://daily@logs.blob.core.windows.net/',
CREDENTIAL = AzureStorageCredential,
TYPE = HADOOP
);
F. Membuat sumber data eksternal untuk mereferensikan instans bernama SQL Server melalui konektivitas PolyBase
Berlaku untuk: SQL Server 2019 (15.x) dan yang lebih baru
Untuk membuat sumber data eksternal yang mereferensikan instans bernama SQL Server, gunakan CONNECTION_OPTIONS
untuk menentukan nama instans.
Dalam contoh berikut, WINSQL2019
adalah nama host dan SQL2019
merupakan nama instans.
'Server=%s\SQL2019'
adalah pasangan nilai kunci.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2019',
CONNECTION_OPTIONS = 'Server=%s\SQL2019',
CREDENTIAL = SQLServerCredentials
);
Atau, Anda dapat menggunakan port untuk menyambungkan ke instans default SQL Server.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2019:58137',
CREDENTIAL = SQLServerCredentials
);
G. Membuat sumber data eksternal untuk mereferensikan replika sekunder grup ketersediaan AlwaysOn yang dapat dibaca
Berlaku untuk: SQL Server 2019 (15.x) dan yang lebih baru
Untuk membuat sumber data eksternal yang mereferensikan replika sekunder SQL Server yang dapat dibaca, gunakan CONNECTION_OPTIONS
untuk menentukan ApplicationIntent=ReadOnly
. Selain itu, Anda harus mengatur database ketersediaan seperti Database={dbname}
dalam CONNECTION_OPTIONS
, atau mengatur database ketersediaan sebagai database default login yang digunakan untuk kredensial cakupan database. Anda harus melakukan ini pada semua replika ketersediaan grup ketersediaan.
Pertama, buat kredensial lingkup database, menyimpan kredensial untuk login terautentikasi SQL. Konektor ODBC SQL untuk PolyBase hanya mendukung autentikasi dasar. Sebelum Anda membuat kredensial lingkup database, database harus memiliki kunci master untuk melindungi kredensial. Untuk informasi selengkapnya, lihat MEMBUAT KUNCI MASTER. Contoh berikut membuat kredensial cakupan database, menyediakan login dan kata sandi Anda sendiri.
CREATE DATABASE SCOPED CREDENTIAL SQLServerCredentials
WITH IDENTITY = 'username',
SECRET = 'password';
Selanjutnya, buat sumber data eksternal baru.
Apakah Anda menyertakan Database=dbname
atau CONNECTION_OPTIONS
mengatur database ketersediaan sebagai database default untuk masuk dalam kredensial lingkup database, Anda masih harus memberikan nama database melalui nama tiga bagian dalam pernyataan CREATE EXTERNAL TABLE, dalam parameter LOCATION. Misalnya, lihat MEMBUAT TABEL EKSTERNAL.
Dalam contoh berikut, WINSQL2019AGL
adalah nama pendengar grup ketersediaan dan dbname
merupakan nama database yang akan menjadi target pernyataan CREATE EXTERNAL TABLE.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2019AGL',
CONNECTION_OPTIONS = 'ApplicationIntent=ReadOnly; Database=dbname',
CREDENTIAL = SQLServerCredentials
);
Anda dapat menunjukkan perilaku pengalihan grup ketersediaan dengan menentukan ApplicationIntent
dan membuat tabel eksternal pada tampilan sys.servers
sistem . Dalam contoh skrip berikut, dua sumber data eksternal dibuat, dan satu tabel eksternal dibuat untuk masing-masing. Gunakan tampilan untuk menguji server mana yang merespons koneksi. Hasil serupa juga dapat dicapai melalui fitur perutean baca-saja. Untuk informasi selengkapnya, lihat Mengonfigurasi perutean baca-saja untuk grup ketersediaan AlwaysOn.
CREATE EXTERNAL DATA SOURCE [DataSource_SQLInstanceListener_ReadOnlyIntent]
WITH (
LOCATION = 'sqlserver://WINSQL2019AGL',
CONNECTION_OPTIONS = 'ApplicationIntent=ReadOnly; Database=dbname',
CREDENTIAL = [SQLServerCredentials]
);
GO
CREATE EXTERNAL DATA SOURCE [DataSource_SQLInstanceListener_ReadWriteIntent]
WITH (
LOCATION = 'sqlserver://WINSQL2019AGL',
CONNECTION_OPTIONS = 'ApplicationIntent=ReadWrite',
CREDENTIAL = [SQLServerCredentials]
);
GO
Di dalam database dalam grup ketersediaan, buat tampilan untuk dikembalikan sys.servers
dan nama instans lokal, yang membantu Anda mengidentifikasi replika mana yang merespons kueri. Untuk informasi selengkapnya, lihat sys.servers.
CREATE VIEW vw_sys_servers
AS
SELECT [name]
FROM sys.servers
WHERE server_id = 0;
GO
Kemudian, buat tabel eksternal pada instans sumber:
CREATE EXTERNAL TABLE vw_sys_servers_ro (name SYSNAME NOT NULL)
WITH (
DATA_SOURCE = [DataSource_SQLInstanceListener_ReadOnlyIntent],
LOCATION = N'dbname.dbo.vw_sys_servers'
);
GO
CREATE EXTERNAL TABLE vw_sys_servers_rw (name SYSNAME NOT NULL)
WITH (
DATA_SOURCE = [DataSource_SQLInstanceListener_ReadWriteIntent],
LOCATION = N'dbname.dbo.vw_sys_servers'
);
GO
SELECT [name]
FROM dbo.vw_sys_servers_ro;--should return secondary replica instance
SELECT [name]
FROM dbo.vw_sys_servers_rw;--should return primary replica instance
GO
Contoh: Operasi massal
Penting
Jangan tambahkan /parameter tanda tangan akses berikutnya, nama file, atau tanda tangan akses bersama di akhir LOCATION
URL saat mengonfigurasi sumber data eksternal untuk operasi massal.
H. Membuat sumber data eksternal untuk operasi massal yang mengambil data dari Azure Storage
Berlaku untuk: SQL Server 2017 (14.x) dan SQL Server 2019 (15.x)
Gunakan sumber data berikut untuk operasi massal menggunakan BULK INSERT atau OPENROWSET. Kredensial harus ditetapkan SHARED ACCESS SIGNATURE
sebagai identitas, tidak boleh memiliki yang terdepan ?
dalam token SAS, harus memiliki setidaknya izin baca pada file yang harus dimuat (misalnya srt=o&sp=r
), dan periode kedaluwarsa harus valid (semua tanggal dalam waktu UTC). Untuk informasi selengkapnya tentang tanda tangan akses bersama, lihat Menggunakan Tanda Tangan Akses Bersama (SAS).
CREATE DATABASE SCOPED CREDENTIAL AccessAzureInvoices
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
-- Remove ? from the beginning of the SAS token
SECRET = '<azure_shared_access_signature>';
CREATE EXTERNAL DATA SOURCE MyAzureInvoices
WITH (
LOCATION = 'https://newinvoices.blob.core.windows.net/week3',
CREDENTIAL = AccessAzureInvoices,
TYPE = BLOB_STORAGE
);
Untuk melihat contoh ini sedang digunakan, lihat SISIPAN MASSAL.
Saya. Membuat sumber data eksternal untuk mengakses data di Azure Storage menggunakan antarmuka abfs://
Berlaku untuk: SQL Server 2019 (15.x) CU11 dan yang lebih baru
Dalam contoh ini, sumber data eksternal adalah akun logs
Azure Data Lake Storage Gen2 , menggunakan driver Azure Blob Filesystem (ABFS). Kontainer penyimpanan disebut daily
. Sumber data eksternal Azure Data Lake Storage Gen2 hanya untuk transfer data, karena pendorongan predikat tidak didukung.
Contoh ini memperlihatkan cara membuat kredensial cakupan database untuk autentikasi ke akun Azure Data Lake Storage Gen2. Tentukan kunci akun Azure Storage dalam rahasia kredensial database. Anda dapat menentukan string apa pun dalam identitas kredensial lingkup database karena tidak digunakan selama autentikasi ke Azure Storage.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH IDENTITY = '<my_account>',
SECRET = '<azure_storage_account_key>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
LOCATION = 'abfss://daily@logs.dfs.core.windows.net/',
CREDENTIAL = AzureStorageCredential,
TYPE = HADOOP
);
j. Membuat sumber data eksternal menggunakan ODBC generik ke PostgreSQL
Seperti dalam contoh sebelumnya, pertama-tama buat kunci master database dan kredensial cakupan database. Kredensial cakupan database akan digunakan untuk sumber data eksternal. Contoh ini juga mengasumsikan bahwa penyedia data ODBC generik untuk PostgreSQL diinstal di server.
Dalam contoh ini, penyedia data ODBC generik digunakan untuk menyambungkan ke server database PostgreSQL di jaringan yang sama, di mana nama domain server PostgreSQL yang sepenuhnya memenuhi syarat adalah POSTGRES1
, menggunakan port default TCP 5432.
CREATE EXTERNAL DATA SOURCE POSTGRES1
WITH (
LOCATION = 'odbc://POSTGRES1.domain:5432',
CONNECTION_OPTIONS = 'Driver={PostgreSQL Unicode(x64)};',
CREDENTIAL = postgres_credential
);
Konten terkait
Ringkasan: SQL Server 2022
Berlaku untuk: SQL Server 2022 (16.x) dan versi yang lebih baru
Membuat sumber data eksternal untuk kueri PolyBase. Sumber data eksternal digunakan untuk membangun konektivitas dan mendukung kasus penggunaan utama ini:
- Virtualisasi data dan pemuatan data menggunakan PolyBase di SQL Server
- Operasi pemuatan massal menggunakan
BULK INSERT
atauOPENROWSET
Catatan
Sintaks ini bervariasi dalam versi SQL Server yang berbeda. Gunakan menu dropdown pemilih versi untuk memilih versi yang sesuai. Konten ini berlaku untuk SQL Server 2022 (16.x) dan versi yang lebih baru.
Sintaks untuk SQL Server 2022
Sintaks untuk SQL Server 2022 dan versi yang lebih baru
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CONNECTION_OPTIONS = '<key_value_pairs>'[,...]]
[ [ , ] CREDENTIAL = <credential_name> ]
[ [ , ] PUSHDOWN = { ON | OFF } ]
)
[ ; ]
Argumen
data_source_name
Menentukan nama yang ditentukan pengguna untuk sumber data. Nama harus unik dalam database di SQL Server.
LOCATION = '<prefix>://<path[:p ort]>'
Menyediakan protokol dan jalur konektivitas ke sumber data eksternal.
Sumber Data Eksternal | Awalan lokasi konektor | Jalur lokasi | Lokasi yang didukung berdasarkan produk / layanan | Autentikasi |
---|---|---|---|---|
Akun Azure Storage(V2) | abs |
abs://<container_name>@<storage_account_name>.blob.core.windows.net/ atau abs://<storage_account_name>.blob.core.windows.net/<container_name> |
Dimulai dengan SQL Server 2022 (16.x) Namespace Hierarkis didukung. |
Tanda Tangan Akses Bersama (SAS) |
Azure Data Lake Storage Gen2 | adls |
adls://<container_name>@<storage_account_name>.dfs.core.windows.net/ atau adls://<storage_account_name>.dfs.core.windows.net/<container_name> |
Dimulai dengan SQL Server 2022 (16.x) | Tanda Tangan Akses Bersama (SAS) |
SQL Server | sqlserver |
<server_name>[\<instance_name>][:port] |
Dimulai dengan SQL Server 2019 (15.x) | Autentikasi SQL saja |
Oracle | oracle |
<server_name>[:port] |
Dimulai dengan SQL Server 2019 (15.x) | Autentikasi dasar saja |
Teradata | teradata |
<server_name>[:port] |
Dimulai dengan SQL Server 2019 (15.x) | Autentikasi dasar saja |
MongoDB atau Cosmos DB API untuk MongoDB | mongodb |
<server_name>[:port] |
Dimulai dengan SQL Server 2019 (15.x) | Autentikasi dasar saja |
Konektivitas Database Terbuka Generik | odbc |
<server_name>[:port] |
Dimulai dengan SQL Server 2019 (15.x) - Hanya Windows | Autentikasi dasar saja |
Operasi Massal | https |
<storage_account>.blob.core.windows.net/<container> |
Dimulai dengan SQL Server 2017 (14.x) | Tanda Tangan Akses Bersama (SAS) |
Penyimpanan objek yang kompatibel dengan S3 | s3 |
- Kompatibel dengan S3: s3://<server_name>:<port>/ - AWS S3: s3://<bucket_name>.S3.amazonaws.com[:port]/<folder> atau s3://s3.amazonaws.com[:port]/<bucket_name>/<folder> |
Dimulai dengan SQL Server 2022 (16.x) | Dasar atau pass-through (STS) * |
* Harus berupa kredensial tercakup database, di mana IDENTITY dikodekan secara IDENTITY = 'S3 Access Key'
permanen dan argumen SECRET dalam format = '<AccessKeyID>:<SecretKeyID>'
atau gunakan otorisasi pass-through (STS). Untuk informasi selengkapnya, lihat Mengonfigurasi PolyBase untuk mengakses data eksternal di penyimpanan objek yang kompatibel dengan S3.
Jalur lokasi:
-
port
= Port yang didengarkan sumber data eksternal. Opsional dalam banyak kasus, tergantung pada konfigurasi jaringan. -
<container_name>
= kontainer akun penyimpanan yang menyimpan data. Kontainer root bersifat baca-saja, data tidak dapat ditulis kembali ke kontainer. -
<storage_account>
= nama akun penyimpanan sumber daya Azure. -
<server_name>
= nama host. -
<instance_name>
= nama instans bernama SQL Server. Digunakan jika Anda memiliki SQL Server Browser Service yang berjalan pada instans target. -
<ip_address>:<port>
= Hanya untuk penyimpanan objek yang kompatibel dengan S3 (dimulai dengan SQL Server 2022 (16.x)), titik akhir dan port yang digunakan untuk menyambungkan ke penyimpanan yang kompatibel dengan S3. -
<bucket_name>
= Hanya untuk penyimpanan objek yang kompatibel dengan S3 (dimulai dengan SQL Server 2022 (16.x)), khusus untuk platform penyimpanan. -
<region>
= Hanya untuk penyimpanan objek yang kompatibel dengan S3 (dimulai dengan SQL Server 2022 (16.x)), khusus untuk platform penyimpanan. -
<folder>
= Bagian dari jalur penyimpanan dalam URL penyimpanan.
Catatan dan panduan tambahan saat mengatur lokasi:
- Mesin Database SQL Server tidak memverifikasi keberadaan sumber data eksternal saat objek dibuat. Untuk memvalidasi, buat tabel eksternal menggunakan sumber data eksternal.
- Anda dapat menggunakan
sqlserver
konektor untuk menyambungkan SQL Server 2019 (15.x) ke SQL Server lain atau ke Azure SQL Database. - Tentukan
Driver={<Name of Driver>}
saat menyambungkan melaluiODBC
. - Opsi Namespace Hierarkis untuk Akun Penyimpanan Azure (V2) menggunakan awalan
adls
didukung melalui Azure Data Lake Storage Gen2 di SQL Server 2022 (16.x).
- Dukungan SQL Server untuk sumber data eksternal HDFS Cloudera (CDP) dan Hortonworks (HDP) dihentikan dan tidak termasuk dalam SQL Server 2022 (16.x). Tidak perlu menggunakan argumen TYPE di SQL Server 2022 (16.x).
- Untuk informasi selengkapnya tentang penyimpanan objek yang kompatibel dengan S3 dan PolyBase yang dimulai dengan SQL Server 2022 (16.x), lihat Mengonfigurasi PolyBase untuk mengakses data eksternal di penyimpanan objek yang kompatibel dengan S3. Untuk contoh kueri file parkek dalam penyimpanan objek yang kompatibel dengan S3, lihat Virtualisasi file parkek dalam penyimpanan objek yang kompatibel dengan S3 dengan PolyBase.
- Berbeda dari versi sebelumnya, di SQL Server 2022 (16.x), awalan yang digunakan untuk Akun Azure Storage (v2) berubah dari
wasb[s]
keabs
. - Berbeda dari versi sebelumnya, di SQL Server 2022 (16.x), awalan yang digunakan untuk Azure Data Lake Storage Gen2 berubah dari
abfs[s]
keadls
. - Untuk contoh menggunakan PolyBase untuk memvirtualisasi file CSV di Azure Storage, lihat Virtualisasi file CSV dengan PolyBase.
- Untuk contoh menggunakan PolyBase untuk memvirtualisasi tabel delta di ADLS Gen2, lihat Virtualisasi tabel delta dengan PolyBase.
- SQL Server 2022 (16.x) sepenuhnya mendukung dua format URL untuk Akun Azure Storage v2 (
abs
) dan Azure Data Lake Gen2 (adls
).- Jalur LOCATION dapat menggunakan format:
<container>@<storage_account_name>..
(disarankan) atau<storage_account_name>../<container>
. Misalnya:- Akun Azure Storage v2:
abs://<container>@<storage_account_name>.blob.core.windows.net
(disarankan) atauabs://<storage_account_name>.blob.core.windows.net/<container>
.
- Akun Azure Storage v2:
- Jalur LOCATION dapat menggunakan format:
- Azure Data Lake Gen2 mendukung:
adls://<container>@<storage_account_name>.blob.core.windows.net
(disarankan) atauadls://<storage_account_name>.dfs.core.windows.net/<container>
.
CONNECTION_OPTIONS = key_value_pair
Ditentukan untuk SQL Server 2019 (15.x) dan versi yang lebih baru. Menentukan opsi tambahan saat menyambungkan ODBC
ke sumber data eksternal. Untuk menggunakan beberapa opsi koneksi, pisahkan dengan titik koma.
Berlaku untuk koneksi generik ODBC
, serta konektor bawaan ODBC
untuk SQL Server, Oracle, Teradata, MongoDB, dan Azure Cosmos DB API untuk MongoDB.
key_value_pair
adalah kata kunci dan nilai untuk opsi koneksi tertentu. Kata kunci dan nilai yang tersedia bergantung pada jenis sumber data eksternal. Nama driver diperlukan sebagai minimum, tetapi ada opsi lain seperti APP='<your_application_name>'
atau ApplicationIntent= ReadOnly|ReadWrite
yang juga berguna untuk diatur dan dapat membantu pemecahan masalah.
Pasangan nilai kunci yang mungkin khusus untuk driver. Untuk informasi selengkapnya untuk setiap penyedia, lihat MEMBUAT SUMBER DATA EKSTERNAL (Transact-SQL) CONNECTION_OPTIONS.
Mulai SQL Server 2022 (16.x) Pembaruan Kumulatif 2, kata kunci tambahan diperkenalkan untuk mendukung file Oracle TNS:
- Kata kunci
TNSNamesFile
menentukan jalur file ke file yangtnsnames.ora
terletak di server Oracle. - Kata kunci
ServerName
menentukan alias yang digunakan di dalamtnsnames.ora
yang akan digunakan untuk mengganti nama host dan port.
PUSHDOWN = AKTIF | OFF
Berlaku untuk: SQL Server 2019 (15.x) dan versi yang lebih baru. Menyatakan apakah komputasi dapat didorong ke sumber data eksternal. Ini aktif secara default.
PUSHDOWN
didukung saat menyambungkan ke SQL Server, Oracle, Teradata, MongoDB, API Azure Cosmos DB untuk MongoDB, atau ODBC di tingkat sumber data eksternal.
Mengaktifkan atau menonaktifkan push-down di tingkat kueri dicapai melalui petunjuk EXTERNALPUSHDOWN.
INFO MASUK = credential_name
Menentukan kredensial cakupan database untuk mengautentikasi ke sumber data eksternal.
Catatan dan panduan tambahan saat membuat kredensial:
-
CREDENTIAL
hanya diperlukan jika data telah diamankan.CREDENTIAL
tidak diperlukan untuk himpunan data yang memungkinkan akses anonim. - Saat mengakses Akun Azure Storage (V2) atau Azure Data Lake Storage Gen2,
IDENTITY
harusSHARED ACCESS SIGNATURE
. - Misalnya, lihat Membuat sumber data eksternal untuk menjalankan operasi massal dan mengambil data dari Azure Storage ke SQL Database.
Ada beberapa cara untuk membuat tanda tangan akses bersama:
Anda dapat membuat token SAS dengan menavigasi ke portal Microsoft Azure -><Your_Storage_Account> -> Tanda tangan akses bersama -> Mengonfigurasi izin -> Hasilkan SAS dan string koneksi. Untuk informasi selengkapnya, lihat Membuat tanda tangan akses bersama.
Anda dapat membuat dan mengonfigurasi SAS dengan Azure Storage Explorer.
Anda dapat membuat token SAS secara terprogram melalui PowerShell, Azure CLI, .NET, dan REST API. Untuk informasi selengkapnya, lihat Berikan akses terbatas ke sumber daya Azure Storage menggunakan tanda tangan akses bersama (SAS).
Token SAS harus dikonfigurasi sebagai berikut:
- Ketika token SAS dihasilkan, token tersebut menyertakan tanda tanya ('?') di awal token. Kecualikan yang terdepan
?
saat dikonfigurasi sebagai SECRET. - Gunakan periode kedaluwarsa yang valid (semua tanggal dalam waktu UTC).
- Ketika token SAS dihasilkan, token tersebut menyertakan tanda tanya ('?') di awal token. Kecualikan yang terdepan
Berikan setidaknya izin baca pada file yang harus dimuat (misalnya
srt=o&sp=r
). Beberapa tanda tangan akses bersama dapat dibuat untuk kasus penggunaan yang berbeda. Izin harus diberikan sebagai berikut:Perbuatan Izin Membaca data dari file Bacalah Membaca data dari beberapa file dan subfolder Baca dan Daftar Gunakan Buat Tabel Eksternal sebagai Pilih (CETAS) Baca, Buat, Cantumkan, dan Tulis Untuk Azure Blob Storage dan Azure Data Lake Gen 2:
- Layanan yang diizinkan:
Blob
harus dipilih untuk menghasilkan token SAS
- Layanan yang diizinkan:
Jenis sumber daya yang diizinkan:
Container
danObject
harus dipilih untuk menghasilkan token SAS
Untuk contoh penggunaan CREDENTIAL
dengan penyimpanan objek yang kompatibel dengan S3 dan PolyBase, lihat Mengonfigurasi PolyBase untuk mengakses data eksternal di penyimpanan objek yang kompatibel dengan S3.
Untuk membuat kredensial lingkup database, lihat MEMBUAT KREDENSIAL CAKUPAN DATABASE (Transact-SQL).
Izin
CONTROL
Memerlukan izin pada database di SQL Server.
Penguncian
Mengambil kunci bersama pada EXTERNAL DATA SOURCE
objek.
Keamanan
PolyBase mendukung autentikasi berbasis proksi untuk sebagian besar sumber data eksternal. Buat kredensial lingkup database untuk membuat akun proksi.
Tingkatkan ke SQL Server 2022
Mulai SQL Server 2022 (16.x), sumber data eksternal Hadoop tidak lagi didukung. Diperlukan untuk membuat ulang sumber data eksternal yang sebelumnya dibuat secara manual dengan TYPE = HADOOP
, dan tabel eksternal apa pun yang menggunakan sumber data eksternal ini.
Pengguna juga perlu mengonfigurasi sumber data eksternal mereka untuk menggunakan konektor baru saat menyambungkan ke Azure Storage.
Sumber Data Eksternal | Dari | Untuk |
---|---|---|
Azure Blob Storage (Penyimpanan BLOB di Azure) | wasb[s] |
abs |
ADLS Gen2 | abfs[s] |
adls |
Contoh
Penting
Untuk informasi tentang cara menginstal dan mengaktifkan PolyBase, lihat Menginstal PolyBase di Windows
J. Membuat sumber data eksternal di SQL Server untuk mereferensikan Oracle
Untuk membuat sumber data eksternal yang mereferensikan Oracle, pastikan Anda memiliki kredensial lingkup database. Anda mungkin juga secara opsional mengaktifkan atau menonaktifkan push-down komputasi terhadap sumber data ini.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL OracleProxyAccount
WITH IDENTITY = 'oracle_username',
SECRET = 'oracle_password';
CREATE EXTERNAL DATA SOURCE MyOracleServer
WITH (
LOCATION = 'oracle://145.145.145.145:1521',
CREDENTIAL = OracleProxyAccount,
PUSHDOWN = ON
);
Secara opsional, sumber data eksternal ke Oracle dapat menggunakan autentikasi proksi untuk memberikan kontrol akses menenangkan. Pengguna proksi dapat dikonfigurasi untuk memiliki akses terbatas dibandingkan dengan pengguna yang ditiru.
CREATE DATABASE SCOPED CREDENTIAL [OracleProxyCredential]
WITH IDENTITY = 'oracle_username',
SECRET = 'oracle_password';
CREATE EXTERNAL DATA SOURCE [OracleSalesSrvr]
WITH (
LOCATION = 'oracle://145.145.145.145:1521',
CONNECTION_OPTIONS = 'ImpersonateUser=%CURRENT_USER',
CREDENTIAL = [OracleProxyCredential]
);
Atau, Anda dapat mengautentikasi menggunakan TNS.
Mulai dari SQL Server 2022 (16.x) Pembaruan Kumulatif 2, CREATE EXTERNAL DATA SOURCE
sekarang mendukung penggunaan file TNS saat menyambungkan ke Oracle.
Parameter CONNECTION_OPTIONS
diperluas dan sekarang menggunakan TNSNamesFile
dan ServerName
sebagai variabel untuk menelusuri tnsnames.ora
file dan membangun koneksi dengan server.
Dalam contoh di bawah ini, selama runtime SQL Server akan mencari tnsnames.ora
lokasi file yang ditentukan oleh TNSNamesFile
dan mencari host dan port jaringan yang ditentukan oleh ServerName
.
CREATE EXTERNAL DATA SOURCE [external_data_source_name]
WITH (
LOCATION = N'oracle://XE',
CREDENTIAL = [OracleCredentialTest],
CONNECTION_OPTIONS = N'TNSNamesFile=C:\Temp\tnsnames.ora;ServerName=XE'
);
B. Membuat sumber data eksternal untuk mereferensikan instans bernama SQL Server melalui konektivitas PolyBase
Berlaku untuk: SQL Server 2019 (15.x) dan yang lebih baru
Untuk membuat sumber data eksternal yang mereferensikan instans bernama SQL Server, gunakan CONNECTION_OPTIONS
untuk menentukan nama instans.
Pertama, buat kredensial lingkup database, menyimpan kredensial untuk login terautentikasi SQL. Konektor ODBC SQL untuk PolyBase hanya mendukung autentikasi dasar. Sebelum Anda membuat kredensial lingkup database, database harus memiliki kunci master untuk melindungi kredensial. Untuk informasi selengkapnya, lihat MEMBUAT KUNCI MASTER (Transact-SQL). Contoh berikut membuat kredensial cakupan database, menyediakan login dan kata sandi Anda sendiri.
CREATE DATABASE SCOPED CREDENTIAL SQLServerCredentials
WITH IDENTITY = 'username',
SECRET = 'password';
Dalam contoh berikut, WINSQL2019
adalah nama host dan SQL2019
merupakan nama instans.
'Server=%s\SQL2019'
adalah pasangan nilai kunci.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2019',
CONNECTION_OPTIONS = 'Server=%s\SQL2019',
CREDENTIAL = SQLServerCredentials
);
Atau, Anda dapat menggunakan port untuk menyambungkan ke instans default SQL Server.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2019:58137',
CREDENTIAL = SQLServerCredentials
);
C. Membuat sumber data eksternal untuk mereferensikan replika sekunder grup ketersediaan AlwaysOn yang dapat dibaca
Berlaku untuk: SQL Server 2019 (15.x) dan yang lebih baru
Untuk membuat sumber data eksternal yang mereferensikan replika sekunder SQL Server yang dapat dibaca, gunakan CONNECTION_OPTIONS
untuk menentukan ApplicationIntent=ReadOnly
. Selain itu, Anda harus mengatur database ketersediaan seperti Database={dbname}
dalam CONNECTION_OPTIONS
, atau mengatur database ketersediaan sebagai database default login yang digunakan untuk kredensial cakupan database. Anda harus melakukan ini pada semua replika ketersediaan grup ketersediaan.
Pertama, buat kredensial lingkup database, menyimpan kredensial untuk login terautentikasi SQL. Konektor ODBC SQL untuk PolyBase hanya mendukung autentikasi dasar. Sebelum Anda membuat kredensial lingkup database, database harus memiliki kunci master untuk melindungi kredensial. Untuk informasi selengkapnya, lihat MEMBUAT KUNCI MASTER (Transact-SQL). Contoh berikut membuat kredensial cakupan database, menyediakan login dan kata sandi Anda sendiri.
CREATE DATABASE SCOPED CREDENTIAL SQLServerCredentials
WITH IDENTITY = 'username',
SECRET = 'password';
Selanjutnya, buat sumber data eksternal baru.
Apakah Anda menyertakan Database=dbname
atau CONNECTION_OPTIONS
mengatur database ketersediaan sebagai database default untuk masuk dalam kredensial lingkup database, Anda masih harus memberikan nama database melalui nama tiga bagian dalam pernyataan CREATE EXTERNAL TABLE, dalam parameter LOCATION. Misalnya, lihat MEMBUAT TABEL EKSTERNAL.
Dalam contoh berikut, WINSQL2019AGL
adalah nama pendengar grup ketersediaan dan dbname
merupakan nama database yang akan menjadi target pernyataan CREATE EXTERNAL TABLE.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2019AGL',
CONNECTION_OPTIONS = 'ApplicationIntent=ReadOnly; Database=dbname',
CREDENTIAL = SQLServerCredentials
);
Anda dapat menunjukkan perilaku pengalihan grup ketersediaan dengan menentukan ApplicationIntent
dan membuat tabel eksternal pada tampilan sys.servers
sistem . Dalam contoh skrip berikut, dua sumber data eksternal dibuat, dan satu tabel eksternal dibuat untuk masing-masing. Gunakan tampilan untuk menguji server mana yang merespons koneksi. Hasil serupa juga dapat dicapai melalui fitur perutean baca-saja. Untuk informasi selengkapnya, lihat Mengonfigurasi perutean baca-saja untuk grup ketersediaan AlwaysOn.
CREATE EXTERNAL DATA SOURCE [DataSource_SQLInstanceListener_ReadOnlyIntent]
WITH (
LOCATION = 'sqlserver://WINSQL2019AGL',
CONNECTION_OPTIONS = 'ApplicationIntent=ReadOnly; Database=dbname',
CREDENTIAL = [SQLServerCredentials]
);
GO
CREATE EXTERNAL DATA SOURCE [DataSource_SQLInstanceListener_ReadWriteIntent]
WITH (
LOCATION = 'sqlserver://WINSQL2019AGL',
CONNECTION_OPTIONS = 'ApplicationIntent=ReadWrite',
CREDENTIAL = [SQLServerCredentials]
);
GO
Di dalam database dalam grup ketersediaan, buat tampilan untuk dikembalikan sys.servers
dan nama instans lokal, yang membantu Anda mengidentifikasi replika mana yang merespons kueri. Untuk informasi selengkapnya, lihat sys.servers.
CREATE VIEW vw_sys_servers
AS
SELECT [name]
FROM sys.servers
WHERE server_id = 0;
GO
Kemudian, buat tabel eksternal pada instans sumber:
CREATE EXTERNAL TABLE vw_sys_servers_ro (name SYSNAME NOT NULL)
WITH (
DATA_SOURCE = [DataSource_SQLInstanceListener_ReadOnlyIntent],
LOCATION = N'dbname.dbo.vw_sys_servers'
);
GO
CREATE EXTERNAL TABLE vw_sys_servers_rw (name SYSNAME NOT NULL)
WITH (
DATA_SOURCE = [DataSource_SQLInstanceListener_ReadWriteIntent],
LOCATION = N'dbname.dbo.vw_sys_servers'
);
GO
SELECT [name]
FROM dbo.vw_sys_servers_ro;--should return secondary replica instance
SELECT [name]
FROM dbo.vw_sys_servers_rw;--should return primary replica instance
GO
D. Membuat sumber data eksternal untuk mengkueri file parkek di penyimpanan objek yang kompatibel dengan S3 melalui PolyBase
Berlaku untuk: SQL Server 2022 (16.x) dan yang lebih baru
Contoh skrip berikut membuat sumber s3_ds
data eksternal di database pengguna sumber di SQL Server. Sumber data eksternal mereferensikan s3_dc
kredensial cakupan database.
CREATE DATABASE SCOPED CREDENTIAL s3_dc
WITH IDENTITY = 'S3 Access Key', -- for S3-compatible object storage the identity must always be S3 Access Key
SECRET = '<access_key_id>:<secret_key_id>' -- provided by the S3-compatible object storage
GO
CREATE EXTERNAL DATA SOURCE s3_ds
WITH (
LOCATION = 's3://<ip_address>:<port>/',
CREDENTIAL = s3_dc
);
GO
Verifikasi sumber data eksternal baru dengan sys.external_data_sources.
SELECT * FROM sys.external_data_sources;
Kemudian, contoh berikut menunjukkan penggunaan T-SQL untuk mengkueri file parket yang disimpan dalam penyimpanan objek yang kompatibel dengan S3 melalui kueri OPENROWSET. Untuk informasi selengkapnya, lihat Virtualisasi file parkek di penyimpanan objek yang kompatibel dengan S3 dengan PolyBase.
SELECT *
FROM OPENROWSET (
BULK '/<bucket>/<parquet_folder>',
FORMAT = 'PARQUET',
DATA_SOURCE = 's3_ds'
) AS [cc];
E. Membuat sumber data eksternal menggunakan ODBC generik ke PostgreSQL
Seperti dalam contoh sebelumnya, pertama-tama buat kunci master database dan kredensial cakupan database. Kredensial cakupan database akan digunakan untuk sumber data eksternal. Contoh ini juga mengasumsikan bahwa penyedia data ODBC generik untuk PostgreSQL diinstal di server.
Dalam contoh ini, penyedia data ODBC generik digunakan untuk menyambungkan ke server database PostgreSQL di jaringan yang sama, di mana nama domain server PostgreSQL yang sepenuhnya memenuhi syarat adalah POSTGRES1
, menggunakan port default TCP 5432.
CREATE EXTERNAL DATA SOURCE POSTGRES1
WITH (
LOCATION = 'odbc://POSTGRES1.domain:5432',
CONNECTION_OPTIONS = 'Driver={PostgreSQL Unicode(x64)};',
CREDENTIAL = postgres_credential
);
Azure Storage
Buat tanda tangan akses bersama
Untuk Azure Blob Storage dan Azure Data Lake Storage (ADLS) Gen2, metode autentikasi yang didukung adalah tanda tangan akses bersama (SAS). Salah satu cara sederhana untuk menghasilkan token tanda tangan akses bersama mengikuti langkah-langkah berikut. Untuk informasi selengkapnya, lihat INFO MASUK.
Navigasikan ke portal Azure, dan Akun Penyimpanan yang diinginkan.
Navigasi ke Kontainer yang Anda inginkan di bawah menu Penyimpanan Data.
Pilih Token akses bersama.
Pilih izin yang sesuai berdasarkan tindakan yang diinginkan:
Perbuatan Izin Membaca data dari file Bacalah Membaca data dari beberapa file dan subfolder Baca dan Daftar Gunakan Buat Tabel Eksternal sebagai Pilih (CETAS) Baca, Buat, dan Tulis Pilih tanggal kedaluwarsa token.
Hasilkan token dan URL SAS.
Salin token SAS.
F. Membuat sumber data eksternal untuk mengakses data di Azure Blob Storage menggunakan antarmuka abs://
Berlaku untuk: SQL Server 2022 (16.x) dan yang lebih baru
Mulai SQL Server 2022 (16.x), gunakan awalan abs
baru untuk Akun Azure Storage v2.
abs
Awalan mendukung autentikasi menggunakan SHARED ACCESS SIGNATURE
.
abs
Awalan wasb
menggantikan , digunakan dalam versi sebelumnya. HADOOP tidak lagi didukung, tidak perlu lagi menggunakan TYPE = BLOB_STORAGE
.
Kunci akun penyimpanan Azure tidak lagi diperlukan, sebagai gantinya menggunakan Token SAS seperti yang dapat kita lihat dalam contoh berikut:
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
GO
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredentialv2
WITH IDENTITY = 'SHARED ACCESS SIGNATURE', -- to use SAS the identity must be fixed as-is
SECRET = '<Blob_SAS_Token>';
GO
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
LOCATION = 'abs://<container>@<storage_account_name>.blob.core.windows.net/',
CREDENTIAL = AzureStorageCredentialv2
);
Untuk contoh yang lebih rinci tentang cara mengakses file CSV yang disimpan di Azure Blob Storage, lihat Virtualisasi file CSV dengan PolyBase.
G. Membuat sumber data eksternal untuk mengakses data di Azure Data Lake Gen2
Berlaku untuk: SQL Server 2022 (16.x) dan versi yang lebih baru
Mulai SQL Server 2022 (16.x), gunakan awalan adls
baru untuk Azure Data Lake Gen2, menggantikan abfs
yang digunakan dalam versi sebelumnya.
adls
Awalan juga mendukung token SAS sebagai metode autentikasi seperti yang ditunjukkan dalam contoh ini:
--Create a database scoped credential using SAS Token
CREATE DATABASE SCOPED CREDENTIAL datalakegen2
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = '<DataLakeGen2_SAS_Token>';
GO
CREATE EXTERNAL DATA SOURCE data_lake_gen2_dfs
WITH (
LOCATION = 'adls://<container>@<storage_account>.dfs.core.windows.net',
CREDENTIAL = datalakegen2
);
Untuk contoh yang lebih rinci tentang cara mengakses file delta yang disimpan di Azure Data Lake Gen2, lihat Virtualisasi tabel delta dengan PolyBase.
Contoh: Operasi Massal
Penting
Jangan tambahkan /parameter tanda tangan akses berikutnya, nama file, atau tanda tangan akses bersama di akhir LOCATION
URL saat mengonfigurasi sumber data eksternal untuk operasi massal.
H. Membuat sumber data eksternal untuk operasi massal yang mengambil data dari Azure Storage
Berlaku untuk: SQL Server 2022 (16.x) dan versi yang lebih baru.
Gunakan sumber data berikut untuk operasi massal menggunakan BULK INSERT (Transact-SQL) atau OPENROWSET (Transact-SQL). Kredensial harus ditetapkan SHARED ACCESS SIGNATURE
sebagai identitas, tidak boleh memiliki yang terdepan ?
dalam token SAS, harus memiliki setidaknya izin baca pada file yang harus dimuat (misalnya srt=o&sp=r
), dan periode kedaluwarsa harus valid (semua tanggal dalam waktu UTC). Untuk informasi selengkapnya tentang tanda tangan akses bersama, lihat Menggunakan Tanda Tangan Akses Bersama (SAS).
CREATE DATABASE SCOPED CREDENTIAL AccessAzureInvoices
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
-- Remove ? from the beginning of the SAS token
SECRET = '<azure_shared_access_signature>';
CREATE EXTERNAL DATA SOURCE MyAzureInvoices
WITH (
LOCATION = 'abs://<container>@<storage_account_name>.blob.core.windows.net/',
CREDENTIAL = AccessAzureInvoices,
);
Konten terkait
Ringkasan: SQL Server 2025
Berlaku untuk: Pratinjau SQL Server 2025 (17.x) dan versi yang lebih baru.
Membuat sumber data eksternal untuk kueri PolyBase. Sumber data eksternal digunakan untuk membangun konektivitas dan mendukung kasus penggunaan utama ini:
- Virtualisasi data dan pemuatan data menggunakan virtualisasi Data dengan PolyBase di SQL Server
- Operasi pemuatan massal menggunakan
BULK INSERT
atauOPENROWSET
Catatan
Sintaks ini bervariasi dalam versi SQL Server yang berbeda. Gunakan daftar dropdown pemilih versi untuk memilih versi yang sesuai. Konten ini berlaku untuk Pratinjau SQL Server 2025 (17.x) dan versi yang lebih baru.
Sintaks untuk SQL Server 2025 dan versi yang lebih baru
Untuk informasi selengkapnya tentang konvensi sintaks, lihat Konvensi sintaks transact-SQL.
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CONNECTION_OPTIONS = '<key_value_pairs>'[,...]]
[ [ , ] CREDENTIAL = <credential_name> ]
[ [ , ] PUSHDOWN = { ON | OFF } ]
)
[ ; ]
Argumen
data_source_name
Menentukan nama yang ditentukan pengguna untuk sumber data. Nama harus unik dalam database di SQL Server.
LOCATION = '<prefix>://<path[:p ort]>'
Menyediakan protokol dan jalur konektivitas ke sumber data eksternal.
Sumber data eksternal | Awalan lokasi konektor | Jalur lokasi | Lokasi yang didukung berdasarkan produk / layanan | Autentikasi |
---|---|---|---|---|
Akun Azure Storage(V2) | abs |
abs://<container_name>@<storage_account_name>.blob.core.windows.net/ atau abs://<storage_account_name>.blob.core.windows.net/<container_name> |
Dimulai dengan SQL Server 2022 (16.x) Namespace Hierarkis didukung. |
Tanda Tangan Akses Bersama (SAS) |
Azure Data Lake Storage Gen2 | adls |
adls://<container_name>@<storage_account_name>.dfs.core.windows.net/ atau adls://<storage_account_name>.dfs.core.windows.net/<container_name> |
Dimulai dengan SQL Server 2022 (16.x) | Tanda Tangan Akses Bersama (SAS) |
SQL Server | sqlserver |
<server_name>[\<instance_name>][:port] |
Dimulai dengan SQL Server 2019 (15.x) | Autentikasi SQL saja |
Oracle | oracle |
<server_name>[:port] |
Dimulai dengan SQL Server 2019 (15.x) | Autentikasi dasar saja |
Teradata | teradata |
<server_name>[:port] |
Dimulai dengan SQL Server 2019 (15.x) | Autentikasi dasar saja |
MongoDB atau Cosmos DB API untuk MongoDB | mongodb |
<server_name>[:port] |
Dimulai dengan SQL Server 2019 (15.x) | Autentikasi dasar saja |
Konektivitas Database Terbuka Generik | odbc |
<server_name>[:port] |
Dimulai dengan SQL Server 2019 (15.x) - Hanya Windows | Autentikasi dasar saja |
Operasi Massal | https |
<storage_account>.blob.core.windows.net/<container> |
Dimulai dengan SQL Server 2017 (14.x) | Tanda Tangan Akses Bersama (SAS) |
Penyimpanan objek yang kompatibel dengan S3 | s3 |
- Kompatibel dengan S3: s3://<server_name>:<port>/ - AWS S3: s3://<bucket_name>.S3.amazonaws.com[:port]/<folder> atau s3://s3.amazonaws.com[:port]/<bucket_name>/<folder> |
Dimulai dengan SQL Server 2022 (16.x) | Dasar atau pass-through (STS) 1 |
1 Harus berupa kredensial tercakup database, di mana IDENTITY
dikodekan IDENTITY = 'S3 Access Key'
secara permanen dan SECRET
argumen dalam format = '<AccessKeyID>:<SecretKeyID>'
atau menggunakan otorisasi pass-through (STS). Untuk informasi selengkapnya, lihat Mengonfigurasi PolyBase untuk mengakses data eksternal di penyimpanan objek yang kompatibel dengan S3.
Jalur lokasi:
Jalur lokasi | Deskripsi |
---|---|
port |
Port yang didengarkan sumber data eksternal. Opsional dalam banyak kasus, tergantung pada konfigurasi jaringan. |
<container_name> |
Kontainer akun penyimpanan yang menyimpan data. Kontainer root bersifat baca-saja, data tidak dapat ditulis kembali ke kontainer. |
<storage_account> |
Nama akun penyimpanan sumber daya Azure. |
<server_name> |
Nama host. |
<instance_name> |
Nama instans bernama SQL Server. Digunakan jika Anda memiliki SQL Server Browser Service yang berjalan pada instans target. |
<ip_address>:<port>
1 |
Hanya untuk penyimpanan objek yang kompatibel dengan S3, titik akhir dan port yang digunakan untuk menyambungkan ke penyimpanan yang kompatibel dengan S3. |
<bucket_name>
1 |
Hanya untuk penyimpanan objek yang kompatibel dengan S3, khusus untuk platform penyimpanan. |
<region>
1 |
Hanya untuk penyimpanan objek yang kompatibel dengan S3, khusus untuk platform penyimpanan. |
<folder> |
Bagian dari jalur penyimpanan dalam URL penyimpanan. |
1 SQL Server 2022 (16.x) dan versi yang lebih baru.
Catatan dan panduan tambahan saat mengatur lokasi:
Mesin Database SQL Server tidak memverifikasi keberadaan sumber data eksternal saat objek dibuat. Untuk memvalidasi, buat tabel eksternal menggunakan sumber data eksternal.
Anda dapat menggunakan
sqlserver
konektor untuk menyambungkan SQL Server 2019 (15.x) ke SQL Server lain atau ke Azure SQL Database.Tentukan
Driver={<Name of Driver>}
saat menyambungkan melaluiODBC
.Opsi Namespace Hierarkis untuk Akun Penyimpanan Azure (V2) menggunakan awalan
adls
didukung melalui Azure Data Lake Storage Gen2 di SQL Server 2022 (16.x) dan versi yang lebih baru.Dukungan SQL Server untuk sumber data eksternal HDFS Cloudera (CDP) dan Hortonworks (HDP) dihentikan dan tidak termasuk dalam SQL Server 2022 (16.x) dan versi yang lebih baru. Tidak perlu menggunakan
TYPE
argumen di Pratinjau SQL Server 2025 (17.x).Untuk informasi selengkapnya tentang penyimpanan objek yang kompatibel dengan S3 dan PolyBase di SQL Server 2022 (16.x) dan versi yang lebih baru, lihat Mengonfigurasi PolyBase untuk mengakses data eksternal di penyimpanan objek yang kompatibel dengan S3. Untuk contoh kueri file parkek dalam penyimpanan objek yang kompatibel dengan S3, lihat Virtualisasi file parkek dalam penyimpanan objek yang kompatibel dengan S3 dengan PolyBase.
Di SQL Server 2022 (16.x) dan versi yang lebih baru:
awalan yang digunakan untuk Akun Azure Storage (v2) diubah dari
wasb[s]
keabs
awalan yang digunakan untuk Azure Data Lake Storage Gen2 berubah dari
abfs[s]
keadls
Untuk contoh menggunakan PolyBase untuk memvirtualisasi file CSV di Azure Storage, lihat Virtualisasi file CSV dengan PolyBase.
Untuk contoh menggunakan PolyBase untuk memvirtualisasi tabel delta di ADLS Gen2, lihat Virtualisasi tabel delta dengan PolyBase.
SQL Server 2022 (16.x) dan versi yang lebih baru sepenuhnya mendukung dua format URL untuk Akun Azure Storage v2 (
abs
) dan Azure Data Lake Gen2 (adls
).Jalur
LOCATION
dapat menggunakan format:<container>@<storage_account_name>..
(disarankan) atau<storage_account_name>../<container>
. Contohnya:- Akun Azure Storage v2:
abs://<container>@<storage_account_name>.blob.core.windows.net
(disarankan) atauabs://<storage_account_name>.blob.core.windows.net/<container>
.
- Akun Azure Storage v2:
Azure Data Lake Gen2 mendukung:
adls://<container>@<storage_account_name>.blob.core.windows.net
(disarankan) atauadls://<storage_account_name>.dfs.core.windows.net/<container>
.
CONNECTION_OPTIONS = key_value_pair
Berlaku untuk: SQL Server 2019 (15.x) dan versi yang lebih baru.
Menentukan opsi tambahan saat menyambungkan ODBC
ke sumber data eksternal. Untuk menggunakan beberapa opsi koneksi, pisahkan dengan titik koma.
Berlaku untuk koneksi generik ODBC
, serta konektor bawaan ODBC
untuk SQL Server, Oracle, Teradata, MongoDB, dan Azure Cosmos DB API untuk MongoDB.
key_value_pair
adalah kata kunci dan nilai untuk opsi koneksi tertentu. Kata kunci dan nilai yang tersedia bergantung pada jenis sumber data eksternal. Nama driver diperlukan sebagai minimum, tetapi ada opsi lain seperti APP='<your_application_name>'
atau ApplicationIntent= ReadOnly|ReadWrite
yang juga berguna untuk diatur dan dapat membantu pemecahan masalah.
Pasangan nilai kunci yang mungkin khusus untuk driver. Untuk informasi selengkapnya untuk setiap penyedia, lihat MEMBUAT SUMBER DATA EKSTERNAL (Transact-SQL) CONNECTION_OPTIONS.
Mulai SQL Server 2022 (16.x) Pembaruan Kumulatif 2, kata kunci tambahan diperkenalkan untuk mendukung file Oracle TNS:
- Kata kunci
TNSNamesFile
menentukan jalur file ke file yangtnsnames.ora
terletak di server Oracle. - Kata kunci
ServerName
menentukan alias yang digunakan di dalamtnsnames.ora
yang akan digunakan untuk mengganti nama host dan port.
Opsi enkripsi di Pratinjau SQL Server 2025 (17.x)
Mulai pratinjau SQL Server 2025 (17.x), saat menggunakan sqlserver
sebagai sumber data, Driver Microsoft ODBC versi 18 untuk SQL Server adalah driver default. Opsi Encryption
diperlukan (Yes
, No
, atau Strict
), dan TrustServerCertificate
tersedia (Yes
atau No
). Jika Encryption
tidak ditentukan, perilaku defaultnya adalah Encrypt=Yes;TrustServerCertificate=No;
, dan memerlukan sertifikat server.
Untuk menyambungkan menggunakan protokol TDS 8.0, mode ketat (Encrypt=Strict
) telah ditambahkan. Dalam mode ini, sertifikat server tepercaya harus diinstal dan selalu diverifikasi (TrustServerCertificate diabaikan). Kata kunci baru, HostnameInCertificate
, dapat digunakan untuk menentukan nama host yang diharapkan yang ditemukan dalam sertifikat jika berbeda dari server yang ditentukan.
HostnameInCertificate
dapat digunakan dalam semua mode enkripsi dan juga berlaku jika opsi Enkripsi Paksa sisi server diaktifkan, yang akan menyebabkan driver memverifikasi sertifikat dalam mode Opsional atau Wajib kecuali dinonaktifkan menggunakan TrustServerCertificate
.
Untuk informasi selengkapnya tentang Encryption
opsi, sertifikat server, dan TrustServerCertificate
, lihat Fitur Driver Microsoft ODBC untuk SQL Server di Windows.
Anda harus selalu menggunakan driver terbaru. Namun, Pratinjau SQL Server 2025 (17.x) juga mendukung Microsoft ODBC Driver versi 17 untuk SQL Server untuk kompatibilitas mundur. Untuk informasi selengkapnya tentang cara mengubah versi driver yang digunakan oleh PolyBase, lihat Cara mengubah versi driver SQL Server untuk PolyBase.
PUSHDOWN = AKTIF | OFF
Berlaku untuk: SQL Server 2019 (15.x) dan versi yang lebih baru.
Menyatakan apakah komputasi dapat didorong ke sumber data eksternal. Diaktifkan secara default.
PUSHDOWN
didukung saat menyambungkan ke SQL Server, Oracle, Teradata, MongoDB, API Azure Cosmos DB untuk MongoDB, atau ODBC di tingkat sumber data eksternal.
Mengaktifkan atau menonaktifkan push-down di tingkat kueri dicapai melalui petunjuk.
INFO MASUK = credential_name
Menentukan kredensial cakupan database untuk mengautentikasi ke sumber data eksternal.
Catatan dan panduan tambahan saat membuat kredensial:
CREDENTIAL
hanya diperlukan jika data telah diamankan.CREDENTIAL
tidak diperlukan untuk himpunan data yang memungkinkan akses anonim.Saat mengakses Akun Azure Storage (V2) atau Azure Data Lake Storage Gen2,
IDENTITY
harusSHARED ACCESS SIGNATURE
.Misalnya, lihat Membuat sumber data eksternal untuk menjalankan operasi massal dan mengambil data dari Azure Storage ke SQL Database.
Ada beberapa cara untuk membuat tanda tangan akses bersama:
Anda dapat membuat token SAS dengan menavigasi ke portal><Microsoft Azure Your_Storage_Account>>Tanda tangan> akses bersamaMengonfigurasi izin>Hasilkan SAS dan string koneksi. Untuk informasi selengkapnya, lihat Membuat tanda tangan akses bersama.
Anda dapat membuat dan mengonfigurasi SAS dengan Azure Storage Explorer.
Anda dapat membuat token SAS secara terprogram melalui PowerShell, Azure CLI, .NET, dan REST API. Untuk informasi selengkapnya, lihat Berikan akses terbatas ke sumber daya Azure Storage menggunakan tanda tangan akses bersama (SAS).
Token SAS harus dikonfigurasi sebagai berikut:
Ketika token SAS dihasilkan, token tersebut menyertakan tanda tanya ('?') di awal token. Kecualikan yang di depan
?
saat dikonfigurasiSECRET
sebagai .Gunakan periode kedaluwarsa yang valid (semua tanggal dalam waktu UTC).
Berikan setidaknya izin baca pada file yang harus dimuat (misalnya
srt=o&sp=r
). Beberapa tanda tangan akses bersama dapat dibuat untuk kasus penggunaan yang berbeda. Izin harus diberikan sebagai berikut:Perbuatan Izin Membaca data dari file Bacalah Membaca data dari beberapa file dan subfolder Baca dan Daftar Gunakan Buat Tabel Eksternal sebagai Pilih (CETAS) Baca, Buat, Cantumkan, dan Tulis Untuk Azure Blob Storage dan Azure Data Lake Gen 2:
- Layanan yang diizinkan:
Blob
harus dipilih untuk menghasilkan token SAS
- Layanan yang diizinkan:
Jenis sumber daya yang diizinkan:
Container
danObject
harus dipilih untuk menghasilkan token SAS
Untuk contoh penggunaan CREDENTIAL
dengan penyimpanan objek yang kompatibel dengan S3 dan PolyBase, lihat Mengonfigurasi PolyBase untuk mengakses data eksternal di penyimpanan objek yang kompatibel dengan S3.
Untuk membuat kredensial lingkup database, lihat MEMBUAT KREDENSIAL CAKUPAN DATABASE.
Izin
CONTROL
Memerlukan izin pada database di SQL Server.
Penguncian
Mengambil kunci bersama pada EXTERNAL DATA SOURCE
objek.
Keamanan
PolyBase mendukung autentikasi berbasis proksi untuk sebagian besar sumber data eksternal. Buat kredensial lingkup database untuk membuat akun proksi.
Tingkatkan ke SQL Server 2025
Di SQL Server 2022 (16.x) dan versi yang lebih baru, sumber data eksternal Hadoop tidak didukung. Diperlukan untuk membuat ulang sumber data eksternal yang sebelumnya dibuat secara manual dengan TYPE = HADOOP
, dan tabel eksternal apa pun yang menggunakan sumber data eksternal ini.
Pengguna juga perlu mengonfigurasi sumber data eksternal mereka untuk menggunakan konektor baru saat menyambungkan ke Azure Storage.
Sumber data eksternal | Dari | Untuk |
---|---|---|
Azure Blob Storage (Penyimpanan BLOB di Azure) | wasb[s] | otot perut |
ADLS Gen2 | abfs[s] | adls |
Contoh
Penting
Untuk informasi tentang cara menginstal dan mengaktifkan PolyBase, lihat Menginstal PolyBase di Windows.
J. Membuat sumber data eksternal di SQL Server untuk mereferensikan Oracle
Untuk membuat sumber data eksternal yang mereferensikan Oracle, pastikan Anda memiliki kredensial lingkup database. Anda mungkin juga secara opsional mengaktifkan atau menonaktifkan push-down komputasi terhadap sumber data ini.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD= '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL OracleProxyAccount
WITH IDENTITY = 'oracle_username', SECRET = 'oracle_password';
CREATE EXTERNAL DATA SOURCE MyOracleServer
WITH (
LOCATION = 'oracle://145.145.145.145:1521',
PUSHDOWN = ON,
CREDENTIAL = OracleProxyAccount
);
Secara opsional, sumber data eksternal ke Oracle dapat menggunakan autentikasi proksi untuk memberikan kontrol akses menenangkan. Pengguna proksi dapat dikonfigurasi untuk memiliki akses terbatas dibandingkan dengan pengguna yang ditiru.
CREATE DATABASE SCOPED CREDENTIAL [OracleProxyCredential]
WITH IDENTITY = 'oracle_username', SECRET = 'oracle_password';
CREATE EXTERNAL DATA SOURCE [OracleSalesSrvr]
WITH (
LOCATION = 'oracle://145.145.145.145:1521',
CONNECTION_OPTIONS = 'ImpersonateUser=%CURRENT_USER',
CREDENTIAL = [OracleProxyCredential]
);
Atau, Anda dapat mengautentikasi menggunakan TNS.
Mulai dari SQL Server 2022 (16.x) Pembaruan Kumulatif 2, CREATE EXTERNAL DATA SOURCE
sekarang mendukung penggunaan file TNS saat menyambungkan ke Oracle.
Parameter CONNECTION_OPTIONS
diperluas dan sekarang menggunakan TNSNamesFile
dan ServerName
sebagai variabel untuk menelusuri tnsnames.ora
file dan membangun koneksi dengan server.
Dalam contoh di bawah ini, selama runtime SQL Server akan mencari tnsnames.ora
lokasi file yang ditentukan oleh TNSNamesFile
dan mencari host dan port jaringan yang ditentukan oleh ServerName
.
CREATE EXTERNAL DATA SOURCE [external_data_source_name]
WITH (
LOCATION = N'oracle://XE',
CREDENTIAL = [OracleCredentialTest],
CONNECTION_OPTIONS = N'TNSNamesFile=C:\Temp\tnsnames.ora;ServerName=XE'
);
B. Membuat sumber data eksternal untuk mereferensikan instans bernama SQL Server melalui konektivitas PolyBase
Berlaku untuk: SQL Server 2019 (15.x) dan versi yang lebih baru.
Untuk membuat sumber data eksternal yang mereferensikan instans bernama SQL Server, gunakan CONNECTION_OPTIONS
untuk menentukan nama instans.
Pertama, buat kredensial lingkup database, menyimpan kredensial untuk login terautentikasi SQL. Konektor ODBC SQL untuk PolyBase hanya mendukung autentikasi dasar. Sebelum Anda membuat kredensial lingkup database, database harus memiliki kunci master untuk melindungi kredensial. Untuk informasi selengkapnya, lihat MEMBUAT KUNCI MASTER. Contoh berikut membuat kredensial cakupan database, menyediakan login dan kata sandi Anda sendiri.
CREATE DATABASE SCOPED CREDENTIAL SQLServerCredentials
WITH IDENTITY = 'username', SECRET = 'password';
Dalam contoh berikut, WINSQL2019
adalah nama host dan SQL2019
merupakan nama instans.
'Server=%s\SQL2019'
adalah pasangan nilai kunci.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2019',
CONNECTION_OPTIONS = 'Server=%s\SQL2019',
CREDENTIAL = SQLServerCredentials
);
Atau, Anda dapat menggunakan port untuk menyambungkan ke instans default SQL Server.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2019:58137',
CREDENTIAL = SQLServerCredentials
);
C. Membuat sumber data eksternal untuk mereferensikan replika sekunder grup ketersediaan AlwaysOn yang dapat dibaca
Berlaku untuk: SQL Server 2019 (15.x) dan versi yang lebih baru.
Untuk membuat sumber data eksternal yang mereferensikan replika sekunder SQL Server yang dapat dibaca, gunakan CONNECTION_OPTIONS
untuk menentukan ApplicationIntent=ReadOnly
. Selain itu, Anda harus mengatur database ketersediaan seperti Database={dbname}
dalam CONNECTION_OPTIONS
, atau mengatur database ketersediaan sebagai database default login yang digunakan untuk kredensial lingkup database. Anda harus melakukan ini pada semua replika ketersediaan grup ketersediaan.
Pertama, buat kredensial lingkup database, menyimpan kredensial untuk login terautentikasi SQL. Konektor ODBC SQL untuk PolyBase hanya mendukung autentikasi dasar. Sebelum Anda membuat kredensial lingkup database, database harus memiliki kunci master untuk melindungi kredensial. Untuk informasi selengkapnya, lihat MEMBUAT KUNCI MASTER. Contoh berikut membuat kredensial cakupan database, menyediakan login dan kata sandi Anda sendiri.
CREATE DATABASE SCOPED CREDENTIAL SQLServerCredentials
WITH IDENTITY = 'username', SECRET = 'password';
Selanjutnya, buat sumber data eksternal baru.
Apakah Anda menyertakan Database=dbname
atau CONNECTION_OPTIONS
mengatur database ketersediaan sebagai database default untuk masuk dalam kredensial lingkup database, Anda masih harus memberikan nama database melalui nama tiga bagian dalam pernyataan CREATE EXTERNAL TABLE, dalam parameter LOCATION. Misalnya, lihat MEMBUAT TABEL EKSTERNAL.
Dalam contoh berikut, WINSQL2019AGL
adalah nama pendengar grup ketersediaan dan dbname
merupakan nama database yang akan menjadi target pernyataan CREATE EXTERNAL TABLE.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2019AGL',
CONNECTION_OPTIONS = 'ApplicationIntent=ReadOnly; Database=dbname',
CREDENTIAL = SQLServerCredentials
);
Anda dapat menunjukkan perilaku pengalihan grup ketersediaan dengan menentukan ApplicationIntent
dan membuat tabel eksternal pada tampilan sys.servers
sistem . Dalam contoh skrip berikut, dua sumber data eksternal dibuat, dan satu tabel eksternal dibuat untuk masing-masing. Gunakan tampilan untuk menguji server mana yang merespons koneksi. Hasil serupa juga dapat dicapai melalui fitur perutean baca-saja. Untuk informasi selengkapnya, lihat Mengonfigurasi perutean baca-saja untuk grup ketersediaan AlwaysOn.
CREATE EXTERNAL DATA SOURCE [DataSource_SQLInstanceListener_ReadOnlyIntent]
WITH (
LOCATION = 'sqlserver://WINSQL2019AGL',
CONNECTION_OPTIONS = 'ApplicationIntent=ReadOnly; Database=dbname',
CREDENTIAL = [SQLServerCredentials]
);
GO
CREATE EXTERNAL DATA SOURCE [DataSource_SQLInstanceListener_ReadWriteIntent]
WITH (
LOCATION = 'sqlserver://WINSQL2019AGL',
CONNECTION_OPTIONS = 'ApplicationIntent=ReadWrite',
CREDENTIAL = [SQLServerCredentials]
);
GO
Di dalam database dalam grup ketersediaan, buat tampilan untuk dikembalikan sys.servers
dan nama instans lokal, yang membantu Anda mengidentifikasi replika mana yang merespons kueri. Untuk informasi selengkapnya, lihat sys.servers.
CREATE VIEW vw_sys_servers AS
SELECT [name]
FROM sys.servers
WHERE server_id = 0;
GO
Kemudian, buat tabel eksternal pada instans sumber:
CREATE EXTERNAL TABLE vw_sys_servers_ro
(
name SYSNAME NOT NULL
)
WITH (
DATA_SOURCE = [DataSource_SQLInstanceListener_ReadOnlyIntent],
LOCATION = N'dbname.dbo.vw_sys_servers'
);
GO
CREATE EXTERNAL TABLE vw_sys_servers_rw
(
name SYSNAME NOT NULL
)
WITH (
DATA_SOURCE = [DataSource_SQLInstanceListener_ReadWriteIntent],
LOCATION = N'dbname.dbo.vw_sys_servers'
);
GO
SELECT [name]
FROM dbo.vw_sys_servers_ro;
--should return secondary replica instance
SELECT [name]
FROM dbo.vw_sys_servers_rw;
--should return primary replica instance
GO
D. Membuat sumber data eksternal untuk mengkueri file parkek di penyimpanan objek yang kompatibel dengan S3 melalui PolyBase
Berlaku untuk: SQL Server 2022 (16.x) dan versi yang lebih baru.
Contoh skrip berikut membuat sumber s3_ds
data eksternal di database pengguna sumber di SQL Server. Sumber data eksternal mereferensikan s3_dc
kredensial cakupan database.
CREATE DATABASE SCOPED CREDENTIAL s3_dc
WITH IDENTITY = 'S3 Access Key', -- for S3-compatible object storage the identity must always be S3 Access Key
SECRET = '<access_key_id>:<secret_key_id>'; -- provided by the S3-compatible object storage
GO
CREATE EXTERNAL DATA SOURCE s3_ds
WITH (
LOCATION = 's3://<ip_address>:<port>/',
CREDENTIAL = s3_dc
);
GO
Verifikasi sumber data eksternal baru dengan sys.external_data_sources.
SELECT *
FROM sys.external_data_sources;
Kemudian, contoh berikut menunjukkan penggunaan T-SQL untuk mengkueri file parket yang disimpan dalam penyimpanan objek yang kompatibel dengan S3 melalui kueri OPENROWSET. Untuk informasi selengkapnya, lihat Virtualisasi file parkek di penyimpanan objek yang kompatibel dengan S3 dengan PolyBase.
SELECT * FROM OPENROWSET (
BULK '/<bucket>/<parquet_folder>',
FORMAT = 'PARQUET',
DATA_SOURCE = 's3_ds'
) AS [cc];
E. Membuat sumber data eksternal menggunakan ODBC generik ke PostgreSQL
Seperti dalam contoh sebelumnya, pertama-tama buat kunci master database dan kredensial cakupan database. Kredensial cakupan database akan digunakan untuk sumber data eksternal. Contoh ini juga mengasumsikan bahwa penyedia data ODBC generik untuk PostgreSQL diinstal di server.
Dalam contoh ini, penyedia data ODBC generik digunakan untuk menyambungkan ke server database PostgreSQL di jaringan yang sama, di mana nama domain server PostgreSQL yang sepenuhnya memenuhi syarat adalah POSTGRES1
, menggunakan port default TCP 5432.
CREATE EXTERNAL DATA SOURCE POSTGRES1
WITH (
LOCATION = 'odbc://POSTGRES1.domain:5432',
CONNECTION_OPTIONS = 'Driver={PostgreSQL Unicode(x64)};',
CREDENTIAL = postgres_credential
);
Azure Storage
Buat tanda tangan akses bersama
Untuk Azure Blob Storage dan Azure Data Lake Gen2, metode autentikasi yang didukung adalah tanda tangan akses bersama (SAS). Salah satu cara sederhana untuk menghasilkan token tanda tangan akses bersama mengikuti langkah-langkah berikut. Untuk informasi selengkapnya, lihat INFO MASUK.
- Navigasikan ke portal Azure, dan Akun Penyimpanan yang diinginkan.
- Navigasi ke Kontainer yang Anda inginkan di bawah menu Penyimpanan Data.
- Pilih Token akses bersama.
- Pilih izin yang sesuai berdasarkan tindakan yang diinginkan, untuk referensi gunakan tabel bellow:
Perbuatan | Izin |
---|---|
Membaca data dari file | Bacalah |
Membaca data dari beberapa file dan subfolder | Baca dan Daftar |
Gunakan Buat Tabel Eksternal sebagai Pilih (CETAS) | Baca, Buat, dan Tulis |
- Pilih tanggal kedaluwarsa token.
- Hasilkan token dan URL SAS.
- Salin token SAS.
F. Membuat sumber data eksternal untuk mengakses data di Azure Blob Storage menggunakan antarmuka abs://
Berlaku untuk: SQL Server 2022 (16.x) dan versi yang lebih baru.
Gunakan awalan abs
baru untuk Akun Azure Storage v2.
abs
Awalan mendukung autentikasi menggunakan SHARED ACCESS SIGNATURE
.
abs
Awalan wasb
menggantikan , digunakan dalam versi sebelumnya. HADOOP tidak lagi didukung, tidak perlu lagi menggunakan TYPE = BLOB_STORAGE
.
Kunci akun penyimpanan Azure tidak lagi diperlukan, sebagai gantinya menggunakan Token SAS seperti yang dapat kita lihat dalam contoh berikut:
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD= '<password>';
GO
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredentialv2
WITH
IDENTITY = 'SHARED ACCESS SIGNATURE', -- to use SAS the identity must be fixed as-is
SECRET = '<Blob_SAS_Token>';
GO
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
LOCATION = 'abs://<container>@<storage_account_name>.blob.core.windows.net/',
CREDENTIAL = AzureStorageCredentialv2
);
Untuk contoh yang lebih rinci tentang cara mengakses file CSV yang disimpan di Azure Blob Storage, lihat Virtualisasi file CSV dengan PolyBase.
G. Membuat sumber data eksternal untuk mengakses data di Azure Data Lake Gen2
Berlaku untuk: SQL Server 2022 (16.x) dan versi yang lebih baru.
Gunakan awalan adls
baru untuk Azure Data Lake Gen2, menggantikan abfs
yang digunakan dalam versi sebelumnya.
adls
Awalan juga mendukung token SAS sebagai metode autentikasi seperti yang ditunjukkan dalam contoh ini:
--Create a database scoped credential using SAS Token
CREATE DATABASE SCOPED CREDENTIAL datalakegen2
WITH
IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = '<DataLakeGen2_SAS_Token>';
GO
CREATE EXTERNAL DATA SOURCE data_lake_gen2_dfs
WITH (
LOCATION = 'adls://<container>@<storage_account>.dfs.core.windows.net',
CREDENTIAL = datalakegen2
);
Untuk contoh yang lebih rinci tentang cara mengakses file delta yang disimpan di Azure Data Lake Gen2, lihat Virtualisasi tabel delta dengan PolyBase.
Contoh: Operasi Massal
Penting
Jangan tambahkan /
parameter tanda tangan akses berikutnya, nama file, atau tanda tangan akses bersama di akhir LOCATION
URL saat mengonfigurasi sumber data eksternal untuk operasi massal.
H. Membuat sumber data eksternal untuk operasi massal yang mengambil data dari Azure Storage
Berlaku untuk: SQL Server 2022 (16.x) dan versi yang lebih baru.
Gunakan sumber data berikut untuk operasi massal menggunakan BULK INSERT atau OPENROWSET. Kredensial harus ditetapkan SHARED ACCESS SIGNATURE
sebagai identitas, tidak boleh memiliki yang terdepan ?
dalam token SAS, harus memiliki setidaknya izin baca pada file yang harus dimuat (misalnya srt=o&sp=r
), dan periode kedaluwarsa harus valid (semua tanggal dalam waktu UTC). Untuk informasi selengkapnya tentang tanda tangan akses bersama, lihat Menggunakan Tanda Tangan Akses Bersama (SAS).
CREATE DATABASE SCOPED CREDENTIAL AccessAzureInvoices
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
-- Remove ? from the beginning of the SAS token
SECRET = '<azure_shared_access_signature>';
CREATE EXTERNAL DATA SOURCE MyAzureInvoices
WITH (
LOCATION = 'abs://<container>@<storage_account_name>.blob.core.windows.net/',
CREDENTIAL = AccessAzureInvoices,
);
Saya. Membuat sumber data eksternal menggunakan TDS 8.0 untuk terhubung dengan SQL Server lain
Berlaku untuk: Pratinjau SQL Server 2025 (17.x) dan versi yang lebih baru.
Saat menggunakan Microsoft ODBC Driver 18 terbaru untuk SQL Server, Anda harus menggunakan Encryption
opsi di bawah CONNECTION_OPTIONS
, dan TrustServerCertificate
juga didukung. Jika Encryption
tidak ditentukan, perilaku defaultnya adalah Encrypt=Yes;TrustServerCertificate=No;
, dan Anda memerlukan sertifikat server.
Dalam contoh ini, Autentikasi SQL digunakan. Untuk melindungi kredensial, Anda memerlukan kunci master database (DMK). Untuk informasi selengkapnya, lihat MEMBUAT KUNCI MASTER. Contoh berikut membuat kredensial cakupan database, dengan login dan kata sandi kustom.
CREATE DATABASE SCOPED CREDENTIAL SQLServerCredentials
WITH
IDENTITY = '<username>',
SECRET = '<password>';
Nama server target adalah WINSQL2022
, port 58137
, dan ini adalah instans default. Dengan menentukan Encryption=Strict
, koneksi menggunakan TDS 8.0, dan sertifikat server selalu diverifikasi. dalam contoh ini, yang HostnameinCertificate
digunakan adalah WINSQL2022
:
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2022:58137',
CONNECTION_OPTIONS = 'Encryption=Strict;HostnameInCertificate=WINSQL2022;'
CREDENTIAL = SQLServerCredentials
);
j. Buat sumber data eksternal menggunakan opsi enkripsi dan TrustServerCertificate
Mengikuti contoh sebelumnya di sini adalah dua sampel kode. Cuplikan pertama telah Encryption
dan TrustServerCertificate
diatur.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2022:58137',
CONNECTION_OPTIONS = 'Encryption=Yes;HostnameInCertificate=WINSQL2022;TrustServerCertificate=Yes;'
CREDENTIAL = SQLServerCredentials
);
Cuplikan berikut tidak diaktifkan Encryption
.
CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
LOCATION = 'sqlserver://WINSQL2022:58137',
CONNECTION_OPTIONS = 'Encryption=no;'
CREDENTIAL = SQLServerCredentials
);
Konten terkait
* SQL Database *
Azure Synapse
Analitik
Gambaran Umum: Azure SQL Database
Berlaku untuk: Azure SQL Database
Membuat sumber data eksternal untuk kueri elastis. Sumber data eksternal digunakan untuk membangun konektivitas dan mendukung kasus penggunaan utama ini:
- Virtualisasi data (pratinjau)
- Operasi pemuatan massal menggunakan
BULK INSERT
atauOPENROWSET
- Mengkueri instans SQL Database jarak jauh atau Azure Synapse menggunakan SQL Database dengan kueri elastis
- Mengkueri SQL Database yang dipecah menggunakan kueri elastis
Sintaks
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CREDENTIAL = <credential_name> ]
[ [ , ] TYPE = { BLOB_STORAGE | RDBMS | SHARD_MAP_MANAGER } ]
[ [ , ] DATABASE_NAME = '<database_name>' ]
[ [ , ] SHARD_MAP_NAME = '<shard_map_manager>' ] )
[ ; ]
Argumen
data_source_name
Menentukan nama yang ditentukan pengguna untuk sumber data. Nama harus unik dalam database di SQL Database.
LOCATION = '<prefix>://<path[:p ort]>'
Menyediakan protokol dan jalur konektivitas ke sumber data eksternal.
Sumber Data Eksternal | Awalan lokasi konektor | Jalur lokasi | Ketersediaan |
---|---|---|---|
Operasi Massal | https |
<storage_account>.blob.core.windows.net/<container> |
|
Kueri Elastis (pecahan) | Tidak diperlukan | <shard_map_server_name>.database.windows.net |
|
Kueri Elastis (jarak jauh) | Tidak diperlukan | <remote_server_name>.database.windows.net |
|
EdgeHub | edgehub |
edgehub:// |
Hanya tersedia di Azure SQL Edge. EdgeHub selalu lokal untuk instans Azure SQL Edge. Dengan demikian, tidak perlu menentukan jalur atau nilai port. |
Kafka | kafka |
kafka://<kafka_bootstrap_server_name_ip>:<port_number> |
Hanya tersedia di Azure SQL Edge. |
Akun Azure Storage (v2) | abs |
abs://<container_name>@<storage_account_name>.blob.core.windows.net/ atau abs://<storage_account_name>.blob.core.windows.net/
<container_name> |
|
Azure Data Lake Storage Gen2 | adls |
adls://<container_name>@<storage_account_name>.dfs.core.windows.net/ atau adls://<storage_account_name>.dfs.core.windows.net/<container_name> |
Jalur lokasi:
-
<shard_map_server_name>
= Nama server logis di Azure yang menghosting manajer peta shard. ArgumenDATABASE_NAME
menyediakan database yang digunakan untuk menghosting peta shard danSHARD_MAP_NAME
digunakan untuk peta shard itu sendiri. -
<remote_server_name>
= Nama server logis target untuk kueri elastis. Nama database ditentukan menggunakanDATABASE_NAME
argumen .
Catatan dan panduan tambahan saat mengatur lokasi:
- Mesin Database tidak memverifikasi keberadaan sumber data eksternal saat objek dibuat. Untuk memvalidasi, buat tabel eksternal menggunakan sumber data eksternal.
INFO MASUK = credential_name
Menentukan kredensial cakupan database untuk mengautentikasi ke sumber data eksternal.
Catatan dan panduan tambahan saat membuat kredensial:
- Untuk memuat data dari Azure Storage ke Azure SQL Database, gunakan Tanda Tangan Akses Bersama (token SAS).
-
CREDENTIAL
hanya diperlukan jika data telah diamankan.CREDENTIAL
tidak diperlukan untuk himpunan data yang memungkinkan akses anonim. -
TYPE
=BLOB_STORAGE
Ketika , kredensial harus dibuat menggunakanSHARED ACCESS SIGNATURE
sebagai identitas. - Saat menyambungkan ke Azure Storage melalui konektor WASB,autentikasi harus dilakukan dengan kunci akun penyimpanan, bukan dengan tanda tangan akses bersama (SAS).
- Ketika
TYPE
=HADOOP
kredensial harus dibuat menggunakan kunci akun penyimpanan sebagaiSECRET
. -
TYPE
=BLOB_STORAGE
hanya diizinkan untuk operasi massal; Anda tidak dapat membuat tabel eksternal untuk sumber data eksternal denganTYPE
=BLOB_STORAGE
.
Ada beberapa cara untuk membuat tanda tangan akses bersama:
Anda dapat membuat token SAS dengan menavigasi ke portal Microsoft Azure -><Your_Storage_Account> -> Tanda tangan akses bersama -> Mengonfigurasi izin -> Hasilkan SAS dan string koneksi. Untuk informasi selengkapnya, lihat Membuat tanda tangan akses bersama.
Anda dapat membuat dan mengonfigurasi SAS dengan Azure Storage Explorer.
Anda dapat membuat token SAS secara terprogram melalui PowerShell, Azure CLI, .NET, dan REST API. Untuk informasi selengkapnya, lihat Berikan akses terbatas ke sumber daya Azure Storage menggunakan tanda tangan akses bersama (SAS).
Token SAS harus dikonfigurasi sebagai berikut:
- Ketika token SAS dihasilkan, token tersebut menyertakan tanda tanya ('?') di awal token. Kecualikan yang terdepan
?
saat dikonfigurasi sebagai SECRET. - Gunakan periode kedaluwarsa yang valid (semua tanggal dalam waktu UTC).
- Ketika token SAS dihasilkan, token tersebut menyertakan tanda tanya ('?') di awal token. Kecualikan yang terdepan
Berikan setidaknya izin baca pada file yang harus dimuat (misalnya
srt=o&sp=r
). Beberapa tanda tangan akses bersama dapat dibuat untuk kasus penggunaan yang berbeda. Izin harus diberikan sebagai berikut:Perbuatan Izin Membaca data dari file Bacalah Membaca data dari beberapa file dan subfolder Baca dan Daftar Gunakan Buat Tabel Eksternal sebagai Pilih (CETAS) Baca, Buat, dan Tulis
Untuk contoh penggunaan CREDENTIAL
dengan SHARED ACCESS SIGNATURE
danTYPE
= BLOB_STORAGE
, lihat Membuat sumber data eksternal untuk menjalankan operasi massal dan mengambil data dari Azure Storage ke SQL Database
Untuk membuat kredensial lingkup database, lihat MEMBUAT KREDENSIAL CAKUPAN DATABASE (Transact-SQL).
TYPE = * [ BLOB_STORAGE | RDBMS | SHARD_MAP_MANAGER ] *
Menentukan jenis sumber data eksternal yang sedang dikonfigurasi. Parameter ini tidak selalu diperlukan, dan hanya boleh disediakan untuk sumber data eksternal tertentu.
- Gunakan
RDBMS
untuk kueri lintas database menggunakan kueri elastis dari SQL Database. - Gunakan
SHARD_MAP_MANAGER
saat membuat sumber data eksternal saat menyambungkan ke SQL Database yang dipecah. - Penggunaan
BLOB_STORAGE
hanya untuk digunakan dengan awalanhttps
. Untukabd
awalan danadls
, jangan sediakanTYPE
.
Penting
Jangan atur TYPE
jika menggunakan sumber data eksternal lainnya.
DATABASE_NAME = database_name
Konfigurasikan argumen ini saat TYPE
diatur ke RDBMS
atau SHARD_MAP_MANAGER
.
JENIS | Nilai DATABASE_NAME |
---|---|
RDBMS |
Nama database jarak jauh di server yang disediakan menggunakan LOCATION |
SHARD_MAP_MANAGER |
Nama database yang beroperasi sebagai pengelola peta shard |
Misalnya memperlihatkan cara membuat sumber data eksternal di mana TYPE = RDBMS
, lihat Membuat sumber data eksternal RDBMS.
SHARD_MAP_NAME = shard_map_name
Digunakan saat TYPE
argumen diatur ke SHARD_MAP_MANAGER
hanya untuk mengatur nama peta shard.
Untuk contoh yang menunjukkan cara membuat sumber data eksternal tempat TYPE
= SHARD_MAP_MANAGER
merujuk ke Membuat sumber data eksternal manajer peta shard
Izin
CONTROL
Memerlukan izin pada database di Azure SQL Database.
Penguncian
Mengambil kunci bersama pada EXTERNAL DATA SOURCE
objek.
Contoh
J. Membuat sumber data eksternal manajer peta shard
Untuk membuat sumber data eksternal untuk mereferensikan SHARD_MAP_MANAGER
, tentukan nama server SQL Database yang menghosting pengelola peta shard di SQL Database atau database SQL Server pada komputer virtual.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
CREATE DATABASE SCOPED CREDENTIAL ElasticDBQueryCred
WITH IDENTITY = '<username>',
SECRET = '<password>';
CREATE EXTERNAL DATA SOURCE MyElasticDBQueryDataSrc
WITH (
TYPE = SHARD_MAP_MANAGER,
LOCATION = '<server_name>.database.windows.net',
DATABASE_NAME = 'ElasticScaleStarterKit_ShardMapManagerDb',
CREDENTIAL = ElasticDBQueryCred,
SHARD_MAP_NAME = 'CustomerIDShardMap'
);
Untuk tutorial langkah demi langkah, lihat Mulai menggunakan kueri elastis untuk sharding (pemartisian horizontal).
B. Membuat sumber data eksternal RDBMS
Untuk membuat sumber data eksternal untuk mereferensikan RDBMS, tentukan nama server SQL Database dari database jarak jauh di SQL Database.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
CREATE DATABASE SCOPED CREDENTIAL SQL_Credential
WITH IDENTITY = '<username>',
SECRET = '<password>';
CREATE EXTERNAL DATA SOURCE MyElasticDBQueryDataSrc
WITH (
TYPE = RDBMS,
LOCATION = '<server_name>.database.windows.net',
DATABASE_NAME = 'Customers',
CREDENTIAL = SQL_Credential
);
Untuk tutorial langkah demi langkah tentang RDBMS, lihat Mulai menggunakan kueri lintas database (pemartisian vertikal).
Contoh: Operasi massal
Penting
Jangan tambahkan /
parameter tanda tangan akses berikutnya, nama file, atau tanda tangan akses bersama di akhir LOCATION
URL saat mengonfigurasi sumber data eksternal untuk operasi massal.
C. Membuat sumber data eksternal untuk operasi massal yang mengambil data dari Azure Storage
Gunakan sumber data berikut untuk operasi massal menggunakan BULK INSERT (Transact-SQL) atau OPENROWSET (Transact-SQL). Kredensial harus ditetapkan SHARED ACCESS SIGNATURE
sebagai identitas, tidak boleh memiliki yang terdepan ?
dalam token SAS, harus memiliki setidaknya izin baca pada file yang harus dimuat (misalnya srt=o&sp=r
), dan periode kedaluwarsa harus valid (semua tanggal dalam waktu UTC). Untuk informasi selengkapnya tentang tanda tangan akses bersama, lihat Menggunakan Tanda Tangan Akses Bersama (SAS).
Buat sumber data eksternal untuk Azure Blob Storage (ABS) menggunakan Identitas Terkelola:
CREATE DATABASE SCOPED CREDENTIAL DSC_MI
WITH IDENTITY = 'Managed Identity'
--Create external data source pointing to the file path, and referencing database-scoped credential:
CREATE EXTERNAL DATA SOURCE PrivateABS
WITH (
LOCATION = 'abs://<container>@<storage_account_name>.blob.core.windows.net/'
,CREDENTIAL = [DSC_MI]);
Buat sumber data eksternal untuk Azure Data Lake Gen2 (ADLS) menggunakan Identitas Pengguna:
CREATE DATABASE SCOPED CREDENTIAL DSC_ADLS
WITH IDENTITY = 'User Identity'
--Create external data source pointing to the file path, and referencing database-scoped credential:
CREATE EXTERNAL DATA SOURCE PrivateADLS
WITH (
LOCATION = 'adls://<container>@<storage_account_name>.dfs.core.windows.net/'
,CREDENTIAL = [DSC_ADLS]);
Untuk melihat contoh ini sedang digunakan, lihat SISIPAN MASSAL.
Contoh: Azure SQL Edge
Penting
Untuk informasi tentang mengonfigurasi data eksternal untuk Azure SQL Edge, lihat Streaming data di Azure SQL Edge.
J. Membuat sumber data eksternal untuk mereferensikan Kafka
Berlaku untuk: Azure SQL Edgesaja
Dalam contoh ini, sumber data eksternal adalah server Kafka dengan alamat IP xxx.xxx.xxx.xxx dan mendengarkan di port 1900. Sumber data eksternal Kafka hanya untuk streaming data dan tidak mendukung dorongan predikat.
-- Create an External Data Source for Kafka
CREATE EXTERNAL DATA SOURCE MyKafkaServer
WITH (LOCATION = 'kafka://xxx.xxx.xxx.xxx:1900');
B. Membuat sumber data eksternal untuk mereferensikan EdgeHub
Berlaku untuk: Azure SQL Edgesaja
Dalam contoh ini, sumber data eksternal adalah EdgeHub yang berjalan pada perangkat edge yang sama dengan Azure SQL Edge. Sumber data eksternal edgeHub hanya untuk streaming data dan tidak mendukung dorongan predikat.
-- Create an External Data Source for Kafka
CREATE EXTERNAL DATA SOURCE MyEdgeHub
WITH (LOCATION = 'edgehub://');
Konten terkait
* Azure Synapse
Analytics*
Ringkasan: Azure Synapse Analytics
Berlaku untuk: Azure Synapse Analytics
Membuat sumber data eksternal untuk virtualisasi data. Sumber data eksternal digunakan untuk membangun konektivitas dan mendukung kasus penggunaan utama virtualisasi data dan pemuatan data dari sumber data eksternal. Untuk informasi selengkapnya, lihat Menggunakan tabel eksternal dengan Synapse SQL.
Penting
Untuk membuat sumber data eksternal untuk mengkueri sumber daya Azure Synapse Analytics menggunakan Azure SQL Database dengan kueri elastis, lihat MEMBUAT SUMBER DATA EKSTERNAL untuk Azure SQL Database.
Sintaks
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CREDENTIAL = <credential_name> ]
[ [ , ] TYPE = HADOOP ]
)
[ ; ]
Argumen
data_source_name
Menentukan nama yang ditentukan pengguna untuk sumber data. Nama harus unik dalam Azure SQL Database di Azure Synapse Analytics.
LOCATION = '<prefix>://<path>'
Menyediakan protokol dan jalur konektivitas ke sumber data eksternal.
Sumber Data Eksternal | Awalan lokasi konektor | Jalur lokasi |
---|---|---|
Data Lake Storage* Gen1 | adl |
<storage_account>.azuredatalake.net |
Data Lake Storage Gen2 | abfs[s] |
<container>@<storage_account>.dfs.core.windows.net |
Azure Blob Storage (Penyimpanan BLOB di Azure) | wasbs |
<container>@<storage_account>.blob.core.windows.net |
Azure Blob Storage (Penyimpanan BLOB di Azure) | https |
<storage_account>.blob.core.windows.net/<container>/subfolders |
Penyimpanan Data Lake Gen1 | http[s] |
<storage_account>.azuredatalakestore.net/webhdfs/v1 |
Data Lake Storage Gen2 | http[s] |
<storage_account>.dfs.core.windows.net/<container>/subfolders |
Data Lake Storage Gen2 | wasb[s] |
<container>@<storage_account>.blob.core.windows.net |
* Microsoft Azure Data Lake Storage Gen1 memiliki dukungan terbatas, Gen2 direkomendasikan untuk semua pengembangan baru.
Sumber Data Eksternal | Awalan lokasi konektor | Kumpulan SQL khusus: PolyBase | Kumpulan SQL khusus: asli* | Kumpulan SQL tanpa server |
---|---|---|---|---|
Data Lake Storage** Gen1 | adl |
Tidak | Tidak | Ya |
Data Lake Storage Gen2 | abfs[s] |
Ya | Ya | Ya |
Azure Blob Storage (Penyimpanan BLOB di Azure) | wasbs |
Ya | Ya*** | Ya |
Azure Blob Storage (Penyimpanan BLOB di Azure) | https |
Tidak | Ya | Ya |
Penyimpanan Data Lake Gen1 | http[s] |
Tidak | Tidak | Ya |
Data Lake Storage Gen2 | http[s] |
Ya | Ya | Ya |
Data Lake Storage Gen2 | wasb[s] |
Ya | Ya | Ya |
* Kumpulan SQL tanpa server dan khusus di Azure Synapse Analytics menggunakan basis kode yang berbeda untuk virtualisasi data. Kumpulan SQL tanpa server mendukung teknologi virtualisasi data asli. Kumpulan SQL khusus mendukung virtualisasi data asli dan PolyBase. Virtualisasi data PolyBase digunakan saat SUMBER DATA EKSTERNAL dibuat dengan TYPE=HADOOP
.
** Microsoft Azure Data Lake Storage Gen1 memiliki dukungan terbatas, Gen2 direkomendasikan untuk semua pengembangan baru.
Konektor yang lebih aman wasbs
direkomendasikan melalui wasb
. Hanya virtualisasi data asli di kumpulan SQL khusus (di mana TYPE tidak sama dengan HADOOP) dukungan wasb
.
Jalur lokasi:
-
<container>
= kontainer akun penyimpanan yang menyimpan data. Kontainer root bersifat baca-saja, data tidak dapat ditulis kembali ke kontainer. -
<storage_account>
= nama akun penyimpanan sumber daya Azure.
Catatan dan panduan tambahan saat mengatur lokasi:
- Opsi defaultnya adalah menggunakan
enable secure SSL connections
saat memprovisikan Azure Data Lake Storage Gen2. Ketika ini diaktifkan, Anda harus menggunakanabfss
ketika koneksi TLS/SSL yang aman dipilih, meskipunabfss
juga berfungsi untuk koneksi TLS yang tidak aman. Untuk informasi selengkapnya, lihat driver Azure Blob Filesystem (ABFS). - Azure Synapse tidak memverifikasi keberadaan sumber data eksternal saat objek dibuat. Untuk memvalidasi, buat tabel eksternal menggunakan sumber data eksternal.
- Gunakan sumber data eksternal yang sama untuk semua tabel saat mengkueri Hadoop untuk memastikan semantik kueri yang konsisten.
- Awalan
https:
memungkinkan Anda menggunakan subfolder di jalur tersebut.https
tidak tersedia untuk semua metode akses data. -
wasbs
disarankan karena data akan dikirim menggunakan koneksi TLS yang aman. - Namespace Hierarkis tidak didukung dengan Akun Penyimpanan Azure V2 saat mengakses data menggunakan antarmuka warisan
wasb://
, tetapi menggunakanwasbs://
mendukung Namespace Hierarkis.
INFO MASUK = credential_name
Opsional. Menentukan kredensial lingkup database untuk mengautentikasi ke sumber data eksternal. Sumber data eksternal tanpa kredensial dapat mengakses akun penyimpanan publik atau menggunakan identitas Microsoft Entra pemanggil untuk mengakses file di penyimpanan Azure.
Catatan dan panduan tambahan saat membuat kredensial:
- Untuk memuat data dari Azure Storage atau Azure Data Lake Store (ADLS) Gen2 ke Azure Synapse Analytics, gunakan Kunci Azure Storage.
-
CREDENTIAL
hanya diperlukan jika data telah diamankan.CREDENTIAL
tidak diperlukan untuk himpunan data yang memungkinkan akses anonim.
Untuk membuat kredensial lingkup database, lihat MEMBUAT KREDENSIAL CAKUPAN DATABASE (Transact-SQL).
Di kumpulan SQL tanpa server, kredensial cakupan database dapat menentukan identitas terkelola ruang kerja, nama perwakilan layanan, atau token tanda tangan akses bersama (SAS). Akses melalui identitas pengguna, juga dikenal sebagai Passthrough Microsoft Entra, juga dimungkinkan dalam kredensial cakupan database, seperti halnya akses anonim ke penyimpanan yang tersedia untuk umum. Untuk informasi selengkapnya, lihat Jenis otorisasi penyimpanan yang didukung.
Dalam kumpulan SQL khusus, kredensial cakupan database dapat menentukan token tanda tangan akses bersama (SAS), kunci akses penyimpanan, perwakilan layanan, identitas terkelola ruang kerja, atau passthrough Microsoft Entra.
TYPE = HADOOP
Opsional, tidak disarankan.
Anda hanya dapat menentukan TYPE dengan kumpulan SQL khusus.
HADOOP
adalah satu-satunya nilai yang diizinkan ketika ditentukan. Sumber data eksternal dengan TYPE=HADOOP
hanya tersedia di kumpulan SQL khusus.
Gunakan HADOOP untuk implementasi warisan, jika tidak, disarankan untuk menggunakan akses data asli yang lebih baru. Jangan tentukan argumen TYPE untuk menggunakan akses data asli yang lebih baru.
Untuk contoh penggunaan TYPE = HADOOP
untuk memuat data dari Azure Storage, lihat Membuat sumber data eksternal untuk mereferensikan Azure Data Lake Store Gen 1 atau 2 menggunakan perwakilan layanan.
Kumpulan SQL tanpa server dan khusus di Azure Synapse Analytics menggunakan basis kode yang berbeda untuk virtualisasi data. Kumpulan SQL tanpa server mendukung teknologi virtualisasi data asli. Kumpulan SQL khusus mendukung virtualisasi data asli dan PolyBase. Virtualisasi data PolyBase digunakan saat SUMBER DATA EKSTERNAL dibuat dengan TYPE=HADOOP
.
Izin
CONTROL
Memerlukan izin pada database.
Penguncian
Mengambil kunci bersama pada EXTERNAL DATA SOURCE
objek.
Keamanan
Sebagian besar sumber data eksternal mendukung autentikasi berbasis proksi, menggunakan kredensial cakupan database untuk membuat akun proksi.
Kunci Tanda Tangan Akses Bersama (SAS) didukung untuk mengautentikasi ke Akun Penyimpanan Azure Data Lake Store Gen 2. Pelanggan yang ingin mengautentikasi dengan menggunakan Tanda Tangan Akses Bersama harus membuat kredensial cakupan database di mana IDENTITY = "Shared Access Signature"
dan memasukkan token SAS sebagai rahasia.
Jika Anda membuat kredensial cakupan database di mana IDENTITY = "Shared Access Signature"
dan menggunakan nilai kunci penyimpanan sebagai rahasia, Anda akan mendapatkan pesan kesalahan berikut:
'HdfsBridge::isDirExist - Unexpected error encountered checking whether directory exists or not: AbfsRestOperationException: Operation failed: "Server failed to authenticate the request. Please refer to the information in the www-authenticate header.", 401, HEAD, [Storage path URL]'
Contoh
J. Membuat sumber data eksternal untuk mengakses data di Azure Storage menggunakan antarmuka wasb://
Dalam contoh ini, sumber data eksternal adalah akun Azure Storage V2 bernama logs
. Kontainer penyimpanan disebut daily
. Sumber data eksternal Azure Storage hanya untuk transfer data. Ini tidak mendukung pendorongan predikat. Namespace hierarkis tidak didukung saat mengakses data melalui wasb://
antarmuka. Saat menyambungkan ke Azure Storage melalui wasb
atau wasbs
, autentikasi harus dilakukan dengan kunci akun penyimpanan, bukan dengan tanda tangan akses bersama (SAS).
Contoh ini menggunakan metode akses berbasis Java HADOOP warisan. Contoh berikut menunjukkan cara membuat kredensial cakupan database untuk autentikasi ke Azure Storage. Tentukan kunci akun Azure Storage dalam rahasia kredensial database. Anda dapat menentukan string apa pun dalam identitas kredensial lingkup database karena tidak digunakan selama autentikasi ke penyimpanan Azure.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH IDENTITY = '<my_account>',
SECRET = '<azure_storage_account_key>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
LOCATION = 'wasbs://daily@logs.blob.core.windows.net/',
CREDENTIAL = AzureStorageCredential,
TYPE = HADOOP
);
B. Membuat sumber data eksternal untuk mereferensikan Azure Data Lake Store Gen 1 atau 2 menggunakan perwakilan layanan
Konektivitas Azure Data Lake Store dapat didasarkan pada URI ADLS dan perwakilan layanan aplikasi Microsoft Entra Anda. Dokumentasi untuk membuat aplikasi ini dapat ditemukan di autentikasi penyimpanan Data lake menggunakan ID Microsoft Entra.
-- If you do not have a Master Key on your DW you will need to create one.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- These values come from your Microsoft Entra application used to authenticate to ADLS
CREATE DATABASE SCOPED CREDENTIAL ADLS_credential
WITH
-- IDENTITY = '<clientID>@<OAuth2.0TokenEndPoint>' ,
IDENTITY = '536540b4-4239-45fe-b9a3-629f97591c0c@https://login.microsoftonline.com/42f988bf-85f1-41af-91ab-2d2cd011da47/oauth2/token',
-- SECRET = '<KEY>'
SECRET = 'BjdIlmtKp4Fpyh9hIvr8HJlUida/seM5kQ3EpLAmeDI=';
-- For Gen 1 - Create an external data source
-- TYPE: HADOOP - PolyBase uses Hadoop APIs to access data in Azure Data Lake Storage.
-- LOCATION: Provide Data Lake Storage Gen 1 account name and URI
-- CREDENTIAL: Provide the credential created in the previous step
CREATE EXTERNAL DATA SOURCE AzureDataLakeStore
WITH (
LOCATION = 'adl://newyorktaxidataset.azuredatalakestore.net',
CREDENTIAL = ADLS_credential,
TYPE = HADOOP
);
-- For Gen2 - Create an external data source
-- TYPE: HADOOP - PolyBase uses Hadoop APIs to access data in Azure Data Lake Storage.
-- LOCATION: Provide Data Lake Storage Gen2 account name and URI
-- CREDENTIAL: Provide the credential created in the previous step
CREATE EXTERNAL DATA SOURCE AzureDataLakeStore
WITH (
-- Note the abfss endpoint when your account has secure transfer enabled
LOCATION = 'abfss://data@newyorktaxidataset.dfs.core.windows.net',
CREDENTIAL = ADLS_credential,
TYPE = HADOOP
);
C. Membuat sumber data eksternal untuk mereferensikan Azure Data Lake Store Gen2 menggunakan kunci akun penyimpanan
-- If you do not have a Master Key on your DW you will need to create one.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
CREATE DATABASE SCOPED CREDENTIAL ADLS_credential
WITH
-- IDENTITY = '<storage_account_name>' ,
IDENTITY = 'newyorktaxidata',
-- SECRET = '<storage_account_key>'
SECRET = 'yz5N4+bxSb89McdiysJAzo+9hgEHcJRJuXbF/uC3mhbezES/oe00vXnZEl14U0lN3vxrFKsphKov16C0w6aiTQ==';
-- Note this example uses a Gen2 secured endpoint (abfss)
CREATE EXTERNAL DATA SOURCE < data_source_name >
WITH (
LOCATION = 'abfss://2013@newyorktaxidataset.dfs.core.windows.net',
CREDENTIAL = ADLS_credential,
TYPE = HADOOP
);
D. Membuat sumber data eksternal ke Azure Data Lake Store Gen2 menggunakan abfs://
Tidak perlu menentukan SECRET saat menyambungkan ke akun Azure Data Lake Store Gen2 dengan mekanisme Identitas Terkelola.
-- If you do not have a Master Key on your DW you will need to create one
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
--Create database scoped credential with **IDENTITY = 'Managed Service Identity'**
CREATE DATABASE SCOPED CREDENTIAL msi_cred
WITH IDENTITY = 'Managed Service Identity';
--Create external data source with abfss:// scheme for connecting to your Azure Data Lake Store Gen2 account
CREATE EXTERNAL DATA SOURCE ext_datasource_with_abfss
WITH (
TYPE = HADOOP,
LOCATION = 'abfss://myfile@mystorageaccount.dfs.core.windows.net',
CREDENTIAL = msi_cred
);
Konten terkait
- MEMBUAT KREDENSIAL CAKUPAN DATABASE (Transact-SQL)
- BUAT FORMAT FILE EKSTERNAL (TRANSACT-SQL)
- BUAT TABEL EKSTERNAL (Transact-SQL)
- CREATE EXTERNAL TABLE AS SELECT (Azure Synapse Analytics)
- CREATE TABLE AS SELECT (Azure Synapse Analytics)
- sys.external_data_sources (T-SQL)
- Menggunakan Tanda Tangan Akses Bersama (SAS)
Azure Synapse
Analitik
*Analytics
Sistem Platform (PDW) *
Gambaran Umum: Sistem Platform Analitik
Berlaku untuk: Analytics Platform System (PDW)
Membuat sumber data eksternal untuk kueri PolyBase. Sumber data eksternal digunakan untuk membangun konektivitas dan mendukung kasus penggunaan berikut: Virtualisasi data dan pemuatan data menggunakan Virtualisasi data dengan PolyBase di SQL Server.
Sintaks
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CREDENTIAL = <credential_name> ]
[ [ , ] TYPE = HADOOP ]
[ [ , ] RESOURCE_MANAGER_LOCATION = '<resource_manager>[:<port>]' )
[ ; ]
Argumen
data_source_name
Menentukan nama yang ditentukan pengguna untuk sumber data. Nama harus unik dalam server di Analytics Platform System (PDW).
LOCATION = '<prefix>://<path[:p ort]>'
Menyediakan protokol dan jalur konektivitas ke sumber data eksternal.
Sumber Data Eksternal | Awalan lokasi konektor | Jalur lokasi |
---|---|---|
Cloudera CDH atau Hortonworks HDP | hdfs |
<Namenode>[:port] |
Akun Azure Storage | wasb[s] |
<container>@<storage_account>.blob.core.windows.net |
Jalur lokasi:
-
<Namenode>
= nama mesin, URI layanan nama, atau alamatNamenode
IP di kluster Hadoop. PolyBase harus menyelesaikan nama DNS apa pun yang digunakan oleh kluster Hadoop. -
port
= Port yang didengarkan sumber data eksternal. Di Hadoop, port dapat ditemukan menggunakanfs.defaultFS
parameter konfigurasi. Defaultnya adalah 8020. -
<container>
= kontainer akun penyimpanan yang menyimpan data. Kontainer root bersifat baca-saja, data tidak dapat ditulis kembali ke kontainer. -
<storage_account>
= nama akun penyimpanan sumber daya Azure.
Catatan dan panduan tambahan saat mengatur lokasi:
- Mesin PDW tidak memverifikasi keberadaan sumber data eksternal saat objek dibuat. Untuk memvalidasi, buat tabel eksternal menggunakan sumber data eksternal.
- Gunakan sumber data eksternal yang sama untuk semua tabel saat mengkueri Hadoop untuk memastikan semantik kueri yang konsisten.
-
wasbs
disarankan karena data akan dikirim menggunakan koneksi TLS yang aman. - Namespace Hierarkis tidak didukung saat digunakan dengan akun Azure Storage melalui wasb://.
- Untuk memastikan kueri PolyBase yang berhasil selama fail-over Hadoop
Namenode
, pertimbangkan untuk menggunakan alamat IP virtual untukNamenode
kluster Hadoop. Jika tidak, jalankan UBAH SUMBER DATA EKSTERNAL untuk menunjuk ke lokasi baru.
INFO MASUK = credential_name
Menentukan kredensial cakupan database untuk mengautentikasi ke sumber data eksternal.
Catatan dan panduan tambahan saat membuat kredensial:
- Untuk memuat data dari Azure Storage ke Azure Synapse atau PDW, gunakan Kunci Azure Storage.
-
CREDENTIAL
hanya diperlukan jika data telah diamankan.CREDENTIAL
tidak diperlukan untuk himpunan data yang memungkinkan akses anonim.
TYPE = * [ HADOOP ] *
Menentukan jenis sumber data eksternal yang sedang dikonfigurasi. Parameter ini tidak selalu diperlukan.
- Gunakan HADOOP saat sumber data eksternal adalah Cloudera CDH, Hortonworks HDP, atau Azure Storage.
Untuk contoh penggunaan TYPE
= HADOOP
untuk memuat data dari Azure Storage, lihat Membuat sumber data eksternal untuk mereferensikan Hadoop.
RESOURCE_MANAGER_LOCATION = 'ResourceManager_URI[:p ort]'
Di SQL Server 2019 (15.x), jangan tentukan RESOURCE_MANAGER_LOCATION kecuali menyambungkan ke Cloudera CDH, Hortonworks HDP, akun Azure Storage.
Konfigurasikan nilai opsional ini saat menyambungkan ke Cloudera CDH, Hortonworks HDP, atau akun Azure Storage saja. Untuk daftar lengkap versi Hadoop yang didukung, lihat Konfigurasi konektivitas PolyBase (Transact-SQL).
RESOURCE_MANAGER_LOCATION
Ketika ditentukan, pengoptimal kueri membuat keputusan berbasis biaya untuk meningkatkan performa. Pekerjaan MapReduce dapat digunakan untuk menurunkan komputasi ke Hadoop. Menentukan RESOURCE_MANAGER_LOCATION
dapat secara signifikan mengurangi volume data yang ditransfer antara Hadoop dan SQL, yang dapat menyebabkan peningkatan performa kueri.
Jika Resource Manager tidak ditentukan, mendorong komputasi ke Hadoop dinonaktifkan untuk kueri PolyBase. Buat sumber data eksternal untuk mereferensikan Hadoop dengan push-down diaktifkan memberikan contoh konkret dan panduan lebih lanjut.
Nilai RESOURCE_MANAGER_LOCATION tidak divalidasi saat Anda membuat sumber data eksternal. Memasukkan nilai yang salah dapat menyebabkan kegagalan kueri pada waktu eksekusi setiap kali push-down dicoba karena nilai yang disediakan tidak akan dapat diselesaikan.
Agar PolyBase berfungsi dengan benar dengan sumber data eksternal Hadoop, port untuk komponen kluster Hadoop berikut harus terbuka:
- Port HDFS
- Namenode
- Datanode
- Resource Manager
- Pengajuan Pekerjaan
- Riwayat pekerjaan
Jika port tidak ditentukan, nilai default dipilih menggunakan pengaturan saat ini untuk konfigurasi 'konektivitas hadoop'.
Konektivitas Hadoop | Default Resource Manager Port |
---|---|
1 |
50300 |
2 |
50300 |
3 |
8021 |
4 |
8032 |
5 |
8050 |
6 |
8032 |
7 |
8050 |
Tabel berikut ini memperlihatkan port default untuk komponen-komponen ini. Ada dependensi versi Hadoop serta kemungkinan konfigurasi kustom yang tidak menggunakan penetapan port default.
Komponen kluster Hadoop | Port Default |
---|---|
NameNode | 8020 |
DataNode (Transfer data, port IPC non-hak istimewa) | 50010 |
DataNode (Transfer data, port IPC hak istimewa) | 1019 |
Pengiriman Pekerjaan Resource Manager (Hortonworks 1.3) | 50300 |
Pengiriman Pekerjaan Resource Manager (Cloudera 4.3) | 8021 |
Pengiriman Pekerjaan Resource Manager (Hortonworks 2.0 di Windows, Cloudera 5.x di Linux) | 8032 |
Pengiriman Pekerjaan Resource Manager (Hortonworks 2.x, 3.0 di Linux, Hortonworks 2.1-3 di Windows) | 8050 |
Riwayat Pekerjaan Resource Manager | 10020 |
Izin
CONTROL
Memerlukan izin pada database di Analytics Platform System (PDW).
Catatan
Dalam rilis PDW sebelumnya, buat sumber data eksternal yang diperlukan ALTER ANY EXTERNAL DATA SOURCE
izin.
Penguncian
Mengambil kunci bersama pada EXTERNAL DATA SOURCE
objek.
Keamanan
PolyBase mendukung autentikasi berbasis proksi untuk sebagian besar sumber data eksternal. Buat kredensial lingkup database untuk membuat akun proksi.
Token SAS dengan jenis HADOOP
tidak didukung. Ini hanya didukung dengan jenis = BLOB_STORAGE
ketika kunci akses akun penyimpanan digunakan sebagai gantinya. Mencoba membuat sumber data eksternal dengan jenis HADOOP
dan kredensial SAS gagal dengan kesalahan berikut:
Msg 105019, Level 16, State 1 - EXTERNAL TABLE access failed due to internal error: 'Java exception raised on call to HdfsBridge_Connect. Java exception message: Parameters provided to connect to the Azure storage account are not valid.: Error [Parameters provided to connect to the Azure storage account are not valid.] occurred while accessing external file.'
Contoh
J. Membuat sumber data eksternal untuk mereferensikan Hadoop
Untuk membuat sumber data eksternal untuk mereferensikan Hortonworks HDP atau Cloudera CDH Anda, tentukan nama mesin, atau alamat IP Hadoop Namenode
dan port.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
LOCATION = 'hdfs://10.10.10.10:8050',
TYPE = HADOOP
);
B. Membuat sumber data eksternal untuk mereferensikan Hadoop dengan push-down diaktifkan
RESOURCE_MANAGER_LOCATION
Tentukan opsi untuk mengaktifkan komputasi push-down ke Hadoop untuk kueri PolyBase. Setelah diaktifkan, PolyBase membuat keputusan berbasis biaya untuk menentukan apakah komputasi kueri harus didorong ke Hadoop.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
LOCATION = 'hdfs://10.10.10.10:8020',
TYPE = HADOOP,
RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);
C. Membuat sumber data eksternal untuk mereferensikan Hadoop yang diamankan Kerberos
Untuk memverifikasi apakah kluster Hadoop diamankan Kerberos, periksa nilai hadoop.security.authentication
properti di Hadoop core-site.xml. Untuk mereferensikan kluster Hadoop yang diamankan Kerberos, Anda harus menentukan kredensial cakupan database yang berisi nama pengguna dan kata sandi Kerberos Anda. Kunci master database digunakan untuk mengenkripsi rahasia kredensial lingkup database.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Kerberos user name and password.
CREATE DATABASE SCOPED CREDENTIAL HadoopUser1
WITH IDENTITY = '<hadoop_user_name>',
SECRET = '<hadoop_password>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH (
LOCATION = 'hdfs://10.10.10.10:8050',
CREDENTIAL = HadoopUser1,
TYPE = HADOOP,
RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
);
D. Membuat sumber data eksternal untuk mengakses data di Azure Storage menggunakan antarmuka wasb://
Dalam contoh ini, sumber data eksternal adalah akun Azure V2 Storage bernama logs
. Kontainer penyimpanan disebut daily
. Sumber data eksternal Azure Storage hanya untuk transfer data. Ini tidak mendukung pendorongan predikat. Namespace hierarkis tidak didukung saat mengakses data melalui wasb://
antarmuka. Saat menyambungkan ke Azure Storage melalui wasb
atau wasbs
, autentikasi harus dilakukan dengan kunci akun penyimpanan, bukan dengan tanda tangan akses bersama (SAS).
Contoh ini memperlihatkan cara membuat kredensial lingkup database untuk autentikasi ke penyimpanan Azure. Tentukan kunci akun penyimpanan Azure dalam rahasia kredensial database. Anda dapat menentukan string apa pun dalam identitas kredensial lingkup database karena tidak digunakan selama autentikasi ke penyimpanan Azure.
-- Create a database master key if one does not already exist, using your own password.
-- This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH IDENTITY = '<my_account>',
SECRET = '<azure_storage_account_key>';
-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH (
LOCATION = 'wasbs://daily@logs.blob.core.windows.net/',
CREDENTIAL = AzureStorageCredential,
TYPE = HADOOP
);
Konten terkait
* SQL Managed Instance *
Azure Synapse
Analitik
Gambaran Umum: Azure SQL Managed Instance
Berlaku untuk: Azure SQL Managed Instance
Membuat sumber data eksternal di Azure SQL Managed Instance. Untuk informasi lengkap, lihat Virtualisasi data dengan Azure SQL Managed Instance.
Virtualisasi data di Azure SQL Managed Instance menyediakan akses ke data eksternal dalam berbagai format file melalui OPENROWSET atau CREATE EXTERNAL TABLE.
Sintaks
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CREDENTIAL = <credential_name> ]
)
[ ; ]
Argumen
data_source_name
Menentukan nama yang ditentukan pengguna untuk sumber data. Nama dalam database harus unik.
LOCATION = '<prefix>://<path[:p ort]>'
Menyediakan protokol dan jalur konektivitas ke sumber data eksternal.
Sumber Data Eksternal | Awalan lokasi | Jalur lokasi |
---|---|---|
Azure Blob Storage (Penyimpanan BLOB di Azure) | abs |
abs://<container>@<storage_account>.blob.core.windows.net/<path>/<file_name> |
Azure Data Lake Service Gen2 | adls |
adls://<container>@<storage_account>.dfs.core.windows.net/<path>/<file_name> |
Mesin Database tidak memverifikasi keberadaan sumber data eksternal saat objek dibuat. Untuk memvalidasi, buat tabel eksternal menggunakan sumber data eksternal.
Jangan tambahkan /parameter tanda tangan akses berikutnya, nama file, atau tanda tangan akses bersama di akhir LOCATION
URL saat mengonfigurasi sumber data eksternal untuk operasi massal.
INFO MASUK = credential_name
Menentukan kredensial cakupan database untuk mengautentikasi ke sumber data eksternal.
Catatan dan panduan tambahan saat membuat kredensial:
- Untuk memuat data dari Azure Storage ke Azure SQL Managed Instance, gunakan Tanda Tangan Akses Bersama (token SAS).
-
CREDENTIAL
hanya diperlukan jika data telah diamankan.CREDENTIAL
tidak diperlukan untuk himpunan data yang memungkinkan akses anonim. - Jika kredensial diperlukan, kredensial harus dibuat menggunakan
Managed Identity
atauSHARED ACCESS SIGNATURE
sebagai IDENTITAS. Untuk membuat kredensial lingkup database, lihat MEMBUAT KREDENSIAL CAKUPAN DATABASE (Transact-SQL).
Untuk menggunakan identitas layanan terkelola untuk kredensial lingkup database:
Menentukan
WITH IDENTITY = 'Managed Identity'
Gunakan identitas layanan terkelola yang ditetapkan sistem dari Azure SQL Managed Instance, yang harus diaktifkan jika akan digunakan untuk tujuan ini.
- Berikan peran RBAC Azure Pembaca ke identitas layanan terkelola yang ditetapkan sistem dari Azure SQL Managed Instance ke kontainer Azure Blob Storage yang diperlukan. Misalnya, melalui portal Azure, lihat Menetapkan peran Azure menggunakan portal Azure.
Untuk membuat tanda tangan akses bersama (SAS) untuk kredensial cakupan database:
Menentukan
WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = ...
Ada beberapa cara untuk membuat tanda tangan akses bersama:
- Anda bisa mendapatkan token SAS dengan menavigasi ke portal Microsoft Azure -><Your_Storage_Account> -> Tanda tangan akses bersama -> Mengonfigurasi izin -> Hasilkan SAS dan string koneksi. Untuk informasi selengkapnya, lihat Membuat tanda tangan akses bersama.
- Anda dapat membuat dan mengonfigurasi SAS dengan Azure Storage Explorer.
- Anda dapat membuat token SAS secara terprogram melalui PowerShell, Azure CLI, .NET, dan REST API. Untuk informasi selengkapnya, lihat Berikan akses terbatas ke sumber daya Azure Storage menggunakan tanda tangan akses bersama (SAS).
Token SAS harus dikonfigurasi sebagai berikut:
- Ketika token SAS dihasilkan, token tersebut menyertakan tanda tanya ('?') di awal token. Kecualikan yang terdepan
?
saat dikonfigurasi sebagai SECRET. - Gunakan periode kedaluwarsa yang valid (semua tanggal dalam waktu UTC).
- Ketika token SAS dihasilkan, token tersebut menyertakan tanda tanya ('?') di awal token. Kecualikan yang terdepan
Berikan setidaknya izin baca pada file yang harus dimuat (misalnya
srt=o&sp=r
). Beberapa tanda tangan akses bersama dapat dibuat untuk kasus penggunaan yang berbeda. Izin harus diberikan sebagai berikut:Perbuatan Izin Membaca data dari file Bacalah Membaca data dari beberapa file dan subfolder Baca dan Daftar Gunakan Buat Tabel Eksternal sebagai Pilih (CETAS) Baca, Buat, dan Tulis
Izin
CONTROL
Memerlukan izin pada database di Azure SQL Managed Instance.
Penguncian
Mengambil kunci bersama pada EXTERNAL DATA SOURCE
objek.
Contoh
Untuk contoh selengkapnya, lihat Virtualisasi data dengan Azure SQL Managed Instance.
J. Mengkueri data eksternal dari Azure SQL Managed Instance dengan OPENROWSET atau tabel eksternal
Untuk contoh selengkapnya, lihat MEMBUAT SUMBER DATA EKSTERNAL (Transact-SQL) atau lihat Virtualisasi data dengan Azure SQL Managed Instance.
Buat kunci master database, jika tidak ada.
-- Optional: Create MASTER KEY if it doesn't exist in the database: CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Strong Password>' GO
Buat kredensial cakupan database menggunakan token SAS. Anda juga dapat menggunakan identitas terkelola.
CREATE DATABASE SCOPED CREDENTIAL MyCredential WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = '<KEY>' ; --Removing leading '?' GO
Buat sumber data eksternal menggunakan kredensial.
--Create external data source pointing to the file path, and referencing database-scoped credential: CREATE EXTERNAL DATA SOURCE MyPrivateExternalDataSource WITH ( LOCATION = 'abs://public@pandemicdatalake.blob.core.windows.net/curated/covid-19/bing_covid-19_data/latest', CREDENTIAL = [MyCredential] );
Kueri file data parquet di sumber data eksternal menggunakan sintaks T-SQL OPENROWSET, mengandalkan inferensi skema untuk menjelajahi data dengan cepat tanpa mengetahui skema.
--Query data with OPENROWSET, relying on schema inference. SELECT TOP 10 * FROM OPENROWSET ( BULK 'bing_covid-19_data.parquet', DATA_SOURCE = 'MyExternalDataSource', FORMAT = 'parquet' ) AS filerows;
Atau, kueri data menggunakan OPENROWSET klausul WITH, alih-alih mengandalkan inferensi skema, yang mungkin mengkueri biaya eksekusi. Pada CSV, inferensi skema tidak didukung.
--Or, query data using the WITH clause on a CSV, where schema inference is not supported SELECT TOP 10 id, updated, confirmed, confirmed_change FROM OPENROWSET ( BULK 'bing_covid-19_data.csv', DATA_SOURCE = 'MyExternalDataSource', FORMAT = 'CSV', FIRSTROW = 2 ) WITH ( id INT, updated DATE, confirmed INT, confirmed_change INT ) AS filerows;
Atau, buat FORMAT FILE EKSTERNAL dan TABEL EKSTERNAL, untuk mengkueri data sebagai tabel lokal.
-- Or, create an EXTERNAL FILE FORMAT and an EXTERNAL TABLE --Create external file format CREATE EXTERNAL FILE FORMAT DemoFileFormat WITH (FORMAT_TYPE = PARQUET) GO --Create external table: CREATE EXTERNAL TABLE tbl_TaxiRides ( vendorID VARCHAR(100) COLLATE Latin1_General_BIN2, tpepPickupDateTime DATETIME2, tpepDropoffDateTime DATETIME2, passengerCount INT, tripDistance FLOAT, puLocationId VARCHAR(8000), doLocationId VARCHAR(8000), startLon FLOAT, startLat FLOAT, endLon FLOAT, endLat FLOAT, rateCodeId SMALLINT, storeAndFwdFlag VARCHAR(8000), paymentType VARCHAR(8000), fareAmount FLOAT, extra FLOAT, mtaTax FLOAT, improvementSurcharge VARCHAR(8000), tipAmount FLOAT, tollsAmount FLOAT, totalAmount FLOAT ) WITH ( LOCATION = 'yellow/puYear=*/puMonth=*/*.parquet', DATA_SOURCE = NYCTaxiExternalDataSource, FILE_FORMAT = MyFileFormat\.\./\.\./\.\./azure-sql/ ); GO --Then, query the data via an external table with T-SQL: SELECT TOP 10 * FROM tbl_TaxiRides; GO