BUAT SUMBER DATA EKSTERNAL (TRANSACT-SQL)
Membuat sumber data eksternal untuk kueri menggunakan SQL Server, Azure SQL Database, Azure SQL Managed Instance, Azure Synapse Analytics, Analytics Platform System (PDW), atau Azure SQL Edge.
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 tersebut yang ditampilkan.
Ringkasan: SQL Server 2016
Berlaku untuk:
SQL Server 2016 (13.x) dan 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
- Operasi pemuatan massal menggunakan
BULK INSERTatauOPENROWSET
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 pratinjau SQL Server 2022 (16.x), kunjungi CREATE EXTERNAL DATA SOURCE.
Sintaks untuk SQL Server 2016
Untuk informasi selengkapnya tentang konvensi sintaks, lihat Konvensi Sintaksis Transact-SQL.
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[:port]>'
Menyediakan protokol konektivitas dan jalur ke sumber data eksternal.
| Sumber Data Eksternal | Awalan lokasi konektor | Jalur lokasi | Lokasi yang didukung berdasarkan produk/layanan |
|---|---|---|---|
| Cloudera CDH atau Hortonworks HDP | hdfs |
<Namenode>[:port] |
SQL Server 2016 (13.x) hingga SQL Server 2019 (15.x) |
| akun Azure Storage(V2) | wasb[s] |
<container>@<storage_account>.blob.core.windows.net |
Dimulai dengan SQL Server 2016 (13.x) Namespace Hierarkis tidak didukung |
Jalur lokasi
<Namenode>= nama komputer, URI layanan nama, atau alamatNamenodeIP 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.defaultFSparameter konfigurasi. Defaultnya adalah 8020.<container>= kontainer akun penyimpanan yang menyimpan data. Kontainer akar 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.
wasbsbersifat opsional tetapi direkomendasikan 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 untukNamenodekluster Hadoop. Jika tidak, jalankan perintah UBAH SUMBER DATA EKSTERNAL untuk menunjuk ke lokasi baru.
INFO MASUK = credential_name
Menentukan kredensial lingkup 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 LINGKUP DATABASE (Transact-SQL).
TYPE = [ HADOOP ]
Menentukan jenis sumber data eksternal yang sedang dikonfigurasi. Pada 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 dalam 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.
RESOURCE_MANAGER_LOCATION Ketika ditentukan, pengoptimal kueri akan membuat keputusan berbasis biaya untuk meningkatkan performa. Pekerjaan MapReduce dapat digunakan untuk mendorong 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.
Jika port tidak ditentukan, nilai default dipilih menggunakan pengaturan saat ini untuk konfigurasi 'konektivitas hadoop'.
| Konektivitas Hadoop | Port Resource Manager Default |
|---|---|
| 1 | 50300 |
| 2 | 50300 |
| 3 | 8021 |
| 4 | 8032 |
| 5 | 8050 |
| 6 | 8032 |
| 7 | 8050 |
| 8 | 8032 |
Untuk daftar lengkap versi Hadoop yang didukung, lihat Konfigurasi Konektivitas PolyBase (SQL Transact).
Penting
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.
Buat sumber data eksternal untuk mereferensikan Hadoop dengan push-down diaktifkan memberikan contoh konkret dan panduan lebih lanjut.
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.
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 komputer, 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
Tentukan RESOURCE_MANAGER_LOCATION 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 Storage Azure 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.
Contoh ini memperlihatkan cara membuat kredensial lingkup 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 untuk Azure Storage. Perhatikan bahwa saat menyambungkan ke Azure Storage melalui konektor WASB,autentikasi harus dilakukan dengan kunci akun penyimpanan, bukan dengan tanda tangan akses bersama (SAS).
Pada 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
) ;
Langkah berikutnya
Ringkasan: SQL Server 2017
Berlaku untuk:
hanya 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
- Operasi pemuatan massal menggunakan
BULK INSERTatauOPENROWSET
Catatan
Sintaks ini bervariasi dalam versi SQL Server yang berbeda di Linux. Gunakan dropdown pemilih versi untuk memilih versi yang sesuai. Untuk melihat fitur SQL Server 2019 (15.x), kunjungi CREATE EXTERNAL DATA SOURCE. Untuk melihat fitur pratinjau SQL Server 2022 (16.x), kunjungi CREATE EXTERNAL DATA SOURCE.
Catatan
Sintaks ini bervariasi dalam versi SQL Server yang berbeda. Gunakan dropdown pemilih versi untuk memilih versi yang sesuai. Untuk melihat fitur SQL Server 2019 (15.x), kunjungi CREATE EXTERNAL DATA SOURCE. Untuk melihat fitur pratinjau SQL Server 2022 (16.x), kunjungi CREATE EXTERNAL DATA SOURCE.
Sintaks untuk SQL Server 2017
Untuk informasi selengkapnya tentang konvensi sintaks, lihat Konvensi Sintaksis transact-SQL.
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[:port]>'
Menyediakan protokol konektivitas dan jalur ke sumber data eksternal.
| Sumber Data Eksternal | Awalan lokasi konektor | Jalur lokasi | Lokasi yang didukung berdasarkan produk /layanan |
|---|---|---|---|
| Cloudera CDH atau Hortonworks HDP | hdfs |
<Namenode>[:port] |
SQL Server 2016 (13.x) hingga SQL Server 2019 (15.x) saja |
| akun Azure Storage(V2) | wasb[s] |
<container>@<storage_account>.blob.core.windows.net |
Dimulai dengan SQL Server 2016 (13.x) Namespace Hierarkis tidak didukung |
| Operasi Massal | https |
<storage_account>.blob.core.windows.net/<container> |
Dimulai dengan SQL Server 2017 (14.x) |
Jalur lokasi
<Namenode>= nama komputer, URI layanan nama, atau alamatNamenodeIP 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.defaultFSparameter konfigurasi. Defaultnya adalah 8020.<container>= kontainer akun penyimpanan yang menyimpan data. Kontainer akar 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 SQL Server Database 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. wasbsbersifat opsional tetapi direkomendasikan 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 untukNamenodekluster Hadoop. Jika tidak, jalankan perintah UBAH SUMBER DATA EKSTERNAL untuk menunjuk ke lokasi baru.
INFO MASUK = credential_name
Menentukan kredensial lingkup database untuk mengautentikasi ke sumber data eksternal.
Catatan dan panduan tambahan saat membuat kredensial:
CREDENTIALhanya diperlukan jika data telah diamankan.CREDENTIALtidak diperlukan untuk himpunan data yang memungkinkan akses anonim.TYPE=BLOB_STORAGEKetika , kredensial harus dibuat menggunakanSHARED ACCESS SIGNATUREsebagai identitas. Selain itu, token SAS harus dikonfigurasi sebagai berikut:- Mengecualikan yang terdepan
?saat dikonfigurasi sebagai rahasia - Memiliki setidaknya izin baca pada file yang harus dimuat (misalnya
srt=o&sp=r) - Gunakan periode kedaluwarsa yang valid (semua tanggal berada dalam waktu UTC).
TYPE=BLOB_STORAGEhanya diizinkan untuk operasi massal; Anda tidak dapat membuat tabel eksternal untuk sumber data eksternal denganTYPE=BLOB_STORAGE.
- Mengecualikan yang terdepan
- Perhatikan bahwa saat menyambungkan ke Azure Storage melalui konektor WASB,autentikasi harus dilakukan dengan kunci akun penyimpanan, bukan dengan tanda tangan akses bersama (SAS).
- Ketika
TYPE=HADOOPkredensial harus dibuat menggunakan kunci akun penyimpanan sebagaiSECRET.
Untuk contoh penggunaan CREDENTIAL dengan SHARED ACCESS SIGNATURE danBLOB_STORAGETYPE = , 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 LINGKUP DATABASE (SQL Transact).
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
HADOOPsaat sumber data eksternal adalah Cloudera CDH, Hortonworks HDP, akun Azure Storage, atau Azure Data Lake Storage Gen2. - Gunakan
BLOB_STORAGEsaat menjalankan operasi massal dari akun Azure Storage menggunakan BULK INSERT atau OPENROWSET. Diperkenalkan dengan SQL Server 2017 (14.x). GunakanHADOOPsaat berniat membuat TABEL EKSTERNAL terhadap Azure Storage.
Catatan
TYPEharus 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.
RESOURCE_MANAGER_LOCATION Ketika ditentukan, Pengoptimal Kueri akan membuat keputusan berbasis biaya untuk meningkatkan performa. Pekerjaan MapReduce dapat digunakan untuk mendorong 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.
Jika port tidak ditentukan, nilai default dipilih menggunakan pengaturan saat ini untuk konfigurasi 'konektivitas hadoop'.
| Konektivitas Hadoop | Port Resource Manager Default |
|---|---|
| 1 | 50300 |
| 2 | 50300 |
| 3 | 8021 |
| 4 | 8032 |
| 5 | 8050 |
| 6 | 8032 |
| 7 | 8050 |
| 8 | 8032 |
Untuk daftar lengkap versi Hadoop yang didukung, lihat Konfigurasi Konektivitas PolyBase (transact-SQL).
Penting
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.
Buat sumber data eksternal untuk mereferensikan Hadoop dengan push-down diaktifkan memberikan contoh konkret dan panduan lebih lanjut.
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 untuk mereferensikan Hadoop
Untuk membuat sumber data eksternal untuk mereferensikan kluster Hortonworks HDP atau Cloudera CDH Hadoop Anda, tentukan nama komputer, 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
Tentukan RESOURCE_MANAGER_LOCATION 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 Storage Azure 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. Perhatikan bahwa saat menyambungkan ke Azure Storage melalui konektor WASB,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 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 untuk 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 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 contoh BULK INSERT .
Langkah berikutnya
Ringkasan: SQL Server 2019
Berlaku untuk:
SQL Server 2019 (15.x) dan 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
- Operasi pemuatan massal menggunakan
BULK INSERTatauOPENROWSET
Catatan
Sintaks ini bervariasi dalam berbagai versi SQL Server di Linux. Gunakan menu dropdown pemilih versi untuk memilih versi yang sesuai. Untuk melihat fitur pratinjau 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 pratinjau SQL Server 2022 (16.x), kunjungi CREATE EXTERNAL DATA SOURCE.
Sintaks untuk SQL Server 2019
Untuk informasi selengkapnya tentang konvensi sintaks, lihat Konvensi Sintaksis 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 } ]
[ [ , ] 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[:port]>'
Menyediakan protokol konektivitas dan jalur ke sumber data eksternal.
| Sumber Data Eksternal | Awalan lokasi konektor | Jalur lokasi | Lokasi yang didukung berdasarkan produk/layanan |
|---|---|---|---|
| Cloudera CDH atau Hortonworks HDP | hdfs |
<Namenode>[:port] |
SQL Server 2016 (13.x) hingga SQL Server 2019 (15.x) |
| akun Azure Storage(V2) | wasb[s] |
<container>@<storage_account>.blob.core.windows.net |
Dimulai dengan SQL Server 2016 (13.x) Namespace Hierarkis tidak didukung |
| SQL Server | sqlserver |
<server_name>[\<instance_name>][:port] |
Dimulai dengan SQL Server 2019 (15.x) |
| Oracle | oracle |
<server_name>[:port] |
Dimulai dengan SQL Server 2019 (15.x) |
| Teradata | teradata |
<server_name>[:port] |
Dimulai dengan SQL Server 2019 (15.x) |
| MongoDB atau Cosmos DB API untuk MongoDB | mongodb |
<server_name>[:port] |
Dimulai dengan SQL Server 2019 (15.x) |
| ODBC Generik | odbc |
<server_name>[:port] |
Dimulai dengan SQL Server 2019 (15.x) - hanya Windows |
| Operasi Massal | https |
<storage_account>.blob.core.windows.net/<container> |
Dimulai dengan SQL Server 2017 (14.x) |
| Azure Data Lake Storage Gen2 | abfs[s] |
abfss://<container>@<storage _account>.dfs.core.windows.net |
Dimulai dengan SQL Server 2019 (15.x) CU11+. |
| SQL Server Kluster Big Data kumpulan data | sqldatapool |
sqldatapool://controller-svc/default |
Hanya didukung di Kluster Big Data SQL Server 2019 |
| kumpulan penyimpanan SQL Server Kluster Big Data | sqlhdfs |
sqlhdfs://controller-svc/default |
Hanya didukung di Kluster Big Data SQL Server 2019 |
Jalur lokasi
<Namenode>= nama komputer, URI layanan nama, atau alamatNamenodeIP 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.defaultFSparameter konfigurasi. Defaultnya adalah 8020.<container>= kontainer akun penyimpanan yang menyimpan data. Kontainer akar 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
sqlserverkonektor untuk menyambungkan SQL Server 2019 (15.x) ke SQL Server lain, untuk Azure SQL Database, atau ke Azure Synapse Analytics. - Tentukan
Driver={<Name of Driver>}saat menyambungkan melaluiODBC. - Menggunakan
wasbsatauabfssbersifat opsional tetapi direkomendasikan untuk mengakses Akun Azure Storage karena data akan dikirim menggunakan koneksi TLS/SSL yang aman. abfsAPI atauabfssdidukung 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 Azure Storage (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 untukNamenodekluster Hadoop. Jika tidak, jalankan perintah UBAH SUMBER DATA EKSTERNAL untuk menunjuk ke lokasi baru. - Jenis
sqlhdfsdansqldatapooldidukung untuk menyambungkan antara instans master dan kumpulan penyimpanan kluster big data. Untuk Cloudera CDH atau Hortonworks HDP, gunakanhdfs. Untuk informasi selengkapnya tentang penggunaansqlhdfsuntuk mengkueri kumpulan penyimpanan SQL Server Kluster Big Data, lihat Kueri HDFS di Kluster Big Data SQL Server 2019. - SQL Server dukungan untuk sumber data eksternal HDFS Cloudera (CDP) dan Hortonworks (HDP) akan dihentikan dan tidak akan disertakan dalam SQL Server 2022. Untuk informasi selengkapnya, lihat Opsi big data di platform Microsoft SQL Server.
CONNECTION_OPTIONS = key_value_pair
Ditentukan hanya untuk SQL Server 2019 (15.x). Menentukan opsi tambahan saat menyambungkan ODBC ke sumber data eksternal. Untuk menggunakan beberapa opsi koneksi, pisahkan dengan titik koma.
Berlaku untuk koneksi generikODBC, 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 minimal, tetapi ada opsi lain seperti APP='<your_application_name>' atau ApplicationIntent= ReadOnly|ReadWrite yang juga berguna untuk diatur dan dapat membantu pemecahan masalah.
Untuk informasi selengkapnya, lihat:
Pushdown = ON | OFF
Ditentukan hanya untuk SQL Server 2019 (15.x). Menyatakan apakah komputasi dapat didorong ke sumber data eksternal. Ini AKTIF secara default.
PUSHDOWNdidukung 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 pada tingkat kueri dicapai melalui petunjuk.
INFO MASUK = credential_name
Menentukan kredensial lingkup database untuk mengautentikasi ke sumber data eksternal.
Catatan dan panduan tambahan saat membuat kredensial:
CREDENTIALhanya diperlukan jika data telah diamankan.CREDENTIALtidak diperlukan untuk himpunan data yang memungkinkan akses anonim.TYPE=BLOB_STORAGEKetika , kredensial harus dibuat menggunakanSHARED ACCESS SIGNATUREsebagai identitas. Selain itu, token SAS harus dikonfigurasi sebagai berikut:- Kecualikan yang terdepan
?saat dikonfigurasi sebagai rahasia. - Memiliki setidaknya izin baca pada file yang harus dimuat (misalnya
srt=o&sp=r). - Gunakan periode kedaluwarsa yang valid (semua tanggal berada dalam waktu UTC).
TYPE=BLOB_STORAGEhanya diizinkan untuk operasi massal; Anda tidak dapat membuat tabel eksternal untuk sumber data eksternal denganTYPE=BLOB_STORAGE.
- Kecualikan yang terdepan
- Perhatikan bahwa saat menyambungkan ke Azure Storage melalui konektor WASB,autentikasi harus dilakukan dengan kunci akun penyimpanan, bukan dengan tanda tangan akses bersama (SAS).
- Ketika
TYPE=HADOOPkredensial harus dibuat menggunakan kunci akun penyimpanan sebagaiSECRET.
Untuk contoh penggunaan CREDENTIAL dengan SHARED ACCESS SIGNATURE danBLOB_STORAGETYPE = , 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 LINGKUP DATABASE (SQL Transact).
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.
- Dalam SQL Server 2019 (15.x), jangan tentukan TYPE kecuali menyambungkan ke Cloudera CDH, Hortonworks HDP, akun Azure Storage.
- Gunakan
HADOOPsaat sumber data eksternal adalah Cloudera CDH, Hortonworks HDP, akun Azure Storage, atau Azure Data Lake Storage Gen2. - Gunakan
BLOB_STORAGEsaat menjalankan operasi massal dari akun Azure Storage menggunakan BULK INSERT, atau OPENROWSET dengan SQL Server 2017 (14.x). GunakanHADOOPsaat berniat membuat TABEL EKSTERNAL terhadap Azure Storage. - SQL Server dukungan untuk sumber data eksternal HDFS Cloudera (CDP) dan Hortonworks (HDP) akan dihentikan dan tidak akan disertakan dalam SQL Server 2022. 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]'
Konfigurasikan nilai opsional ini saat menyambungkan ke Cloudera CDH, Hortonworks HDP, atau akun Azure Storage saja. Di SQL Server 2019 (15.x), jangan tentukan RESOURCE_MANAGER_LOCATION kecuali menyambungkan ke Cloudera CDH, Hortonworks HDP, akun Azure Storage.
RESOURCE_MANAGER_LOCATION Ketika ditentukan, Pengoptimal Kueri akan membuat keputusan berbasis biaya untuk meningkatkan performa. Pekerjaan MapReduce dapat digunakan untuk mendorong 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.
Jika port tidak ditentukan, nilai default dipilih menggunakan pengaturan saat ini untuk konfigurasi 'konektivitas hadoop'.
| Konektivitas Hadoop | Port Resource Manager Default |
|---|---|
| 1 | 50300 |
| 2 | 50300 |
| 3 | 8021 |
| 4 | 8032 |
| 5 | 8050 |
| 6 | 8032 |
| 7 | 8050 |
| 8 | 8032 |
Untuk daftar lengkap versi Hadoop yang didukung, lihat Konfigurasi Konektivitas PolyBase (transact-SQL).
Penting
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.
Buat sumber data eksternal untuk mereferensikan Hadoop dengan push-down diaktifkan memberikan contoh konkret dan panduan lebih lanjut.
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 juga dapat 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]);
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 komputer, 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
Tentukan RESOURCE_MANAGER_LOCATION 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 Storage Azure V2 bernama logs. Kontainer penyimpanan disebut daily. Sumber data eksternal Azure Storage hanya untuk transfer data. Ini tidak mendukung predikat push-down. Namespace hierarkis tidak didukung saat mengakses data melalui wasb:// antarmuka. Perhatikan bahwa saat menyambungkan ke Azure Storage melalui konektor WASB,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 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 untuk 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 SQL Server instans bernama melalui konektivitas PolyBase
Berlaku untuk: SQL Server 2019 (15.x) dan yang lebih baru
Untuk membuat sumber data eksternal yang mereferensikan instans SQL Server bernama, gunakan CONNECTION_OPTIONS untuk menentukan nama instans.
Dalam contoh di bawah ini, 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 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.
Pertama, buat kredensial terlingkup database, menyimpan kredensial untuk login SQL diautentikasi. 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 lingkup database, menyediakan login dan kata sandi Anda sendiri.
CREATE DATABASE SCOPED CREDENTIAL SQLServerCredentials
WITH IDENTITY = 'username', SECRET = 'password';
Selanjutnya, buat sumber data eksternal baru.
Parameter ODBC Database tidak diperlukan, berikan nama database sebagai gantinya melalui nama tiga bagian dalam pernyataan CREATE EXTERNAL TABLE, dalam parameter LOCATION. Misalnya, lihat CREATE EXTERNAL TABLE.
Dalam contoh di bawah ini, 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' ,
CREDENTIAL = SQLServerCredentials
);
Anda dapat menunjukkan perilaku pengalihan grup ketersediaan dengan menentukan ApplicationIntent dan membuat tabel eksternal pada tampilan sys.serverssistem . 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' ,
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 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 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 = 'https://newinvoices.blob.core.windows.net/week3' ,
CREDENTIAL = AccessAzureInvoices ,
TYPE = BLOB_STORAGE
) ;
Untuk melihat contoh ini sedang digunakan, lihat contoh BULK INSERT .
i. 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 logsAzure 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 lingkup 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 untuk 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
) ;
Langkah berikutnya
Ringkasan: SQL Server 2022
Berlaku untuk:
pratinjau SQL Server 2022 (16.x) dan 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
- Operasi pemuatan massal menggunakan
BULK INSERTatauOPENROWSET
Catatan
Sintaks ini bervariasi dalam berbagai versi SQL Server di Linux. Gunakan menu dropdown pemilih versi untuk memilih versi yang sesuai. Konten ini berlaku untuk Pratinjau SQL Server 2022 (16.x) dan yang lebih baru.
Sintaks untuk SQL Server 2022 dan yang lebih baru
Untuk informasi selengkapnya tentang konvensi sintaks, lihat Konvensi Sintaksis 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 } ]
[ [ , ] 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[:port]>'
Menyediakan protokol konektivitas dan jalur ke sumber data eksternal.
| Sumber Data Eksternal | Awalan lokasi konektor | Jalur lokasi | Lokasi yang didukung berdasarkan produk/layanan |
|---|---|---|---|
| Cloudera CDH atau Hortonworks HDP | hdfs |
<Namenode>[:port] |
SQL Server 2016 (13.x) hingga SQL Server 2019 (15.x) |
| akun Azure Storage(V2) | abs |
abs://<container>@<storage_account>.blob.core.windows.net |
Dimulai dengan Pratinjau SQL Server 2022 (16.x) Namespace Hierarkis didukung |
| SQL Server | sqlserver |
<server_name>[\<instance_name>][:port] |
Dimulai dengan SQL Server 2019 (15.x) |
| Oracle | oracle |
<server_name>[:port] |
Dimulai dengan SQL Server 2019 (15.x) |
| Teradata | teradata |
<server_name>[:port] |
Dimulai dengan SQL Server 2019 (15.x) |
| MongoDB atau Cosmos DB API untuk MongoDB | mongodb |
<server_name>[:port] |
Dimulai dengan SQL Server 2019 (15.x) |
| ODBC Generik | odbc |
<server_name>[:port] |
Dimulai dengan SQL Server 2019 (15.x) - hanya Windows |
| Operasi Massal | https |
<storage_account>.blob.core.windows.net/<container> |
Dimulai dengan SQL Server 2017 (14.x) |
| Azure Data Lake Storage Gen2 | adls |
adls://<container>@<storage _account>.dfs.core.windows.net |
Dimulai dengan pratinjau SQL Server 2022 (16.x) |
| SQL Server Kluster Big Data kumpulan data | sqldatapool |
sqldatapool://controller-svc/default |
Hanya didukung di Kluster Big Data SQL Server 2019 |
| SQL Server Kluster Big Data kumpulan penyimpanan | sqlhdfs |
sqlhdfs://controller-svc/default |
Hanya didukung di Kluster Big Data SQL Server 2019 |
| Penyimpanan objek yang kompatibel dengan S3 | s3 |
s3://<server_name>:<port>/ |
Dimulai dengan pratinjau SQL Server 2022 (16.x) |
Jalur lokasi:
<Namenode>= nama komputer, URI layanan nama, atau alamatNamenodeIP 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.defaultFSparameter konfigurasi. Defaultnya adalah 8020.<container>= kontainer akun penyimpanan yang menyimpan data. Kontainer akar 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 pratinjau SQL Server 2022 (16.x), titik akhir dan port yang digunakan untuk menyambungkan ke penyimpanan yang kompatibel dengan S3.
Catatan dan panduan tambahan saat mengatur lokasi:
- Mesin SQL Server Database 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
sqlserverkonektor untuk menyambungkan SQL Server 2019 (15.x) ke SQL Server lain, ke Azure SQL Database, atau ke Azure Synapse Analytics. - Tentukan
Driver={<Name of Driver>}saat menyambungkan melaluiODBC. - Opsi Namespace Hierarkis untuk Akun Azure Storage(V2) menggunakan awalan
adlsdidukung melalui Azure Data Lake Storage Gen2 di Pratinjau SQL Server 2022 (16.x). - Untuk memastikan kueri PolyBase yang berhasil selama fail-over Hadoop
Namenode, pertimbangkan untuk menggunakan alamat IP virtual untukNamenodekluster Hadoop. Jika tidak, jalankan perintah UBAH SUMBER DATA EKSTERNAL untuk menunjuk ke lokasi baru. - Jenis
sqlhdfsdansqldatapooldidukung untuk menghubungkan antara instans master dan kumpulan penyimpanan SQL Server 2019 Big Data Cluster. Untuk Cloudera CDH atau Hortonworks HDP, gunakanhdfs. Untuk informasi selengkapnya tentang penggunaansqlhdfsuntuk mengkueri kumpulan penyimpanan SQL Server Kluster Big Data, lihat Kueri HDFS di Kluster Big Data SQL Server 2019. - SQL Server dukungan untuk sumber data eksternal HDFS Cloudera (CDP) dan Hortonworks (HDP) akan dihentikan dan tidak akan disertakan dalam SQL Server 2022. Untuk informasi selengkapnya, lihat Opsi big data di platform Microsoft SQL Server.
- Untuk informasi selengkapnya tentang penyimpanan objek yang kompatibel dengan S3 dan PolyBase yang dimulai dengan Pratinjau SQL Server 2022 (16.x), lihat Mengonfigurasi PolyBase untuk mengakses data eksternal di penyimpanan objek yang kompatibel dengan S3. Untuk contoh mengkueri file parquet dalam penyimpanan objek yang kompatibel dengan S3, lihat Memvirtualisasikan file parquet dalam penyimpanan objek yang kompatibel dengan S3 dengan PolyBase.
- Berbeda dari versi sebelumnya, dalam Pratinjau SQL Server 2022 (16.x), awalan yang digunakan untuk Akun Azure Storage (v2) berubah dari
wasb[s]keabs. - Berbeda dari versi sebelumnya, dalam Pratinjau SQL Server 2022 (16.x), awalan yang digunakan untuk Azure Data Lake Storage Gen2 diubah dari
abfs[s]keadls.
CONNECTION_OPTIONS = key_value_pair
Ditentukan hanya untuk SQL Server 2019 (15.x). Menentukan opsi tambahan saat menyambungkan ODBC ke sumber data eksternal. Untuk menggunakan beberapa opsi koneksi, pisahkan dengan titik koma.
Berlaku untuk koneksi generikODBC, 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 minimal, tetapi ada opsi lain seperti APP='<your_application_name>' atau ApplicationIntent= ReadOnly|ReadWrite yang juga berguna untuk diatur dan dapat membantu pemecahan masalah.
Untuk informasi selengkapnya, lihat:
PUSHDOWN = ON | OFF
Berlaku untuk: SQL Server 2019 (15.x) dan yang lebih baru. Menyatakan apakah komputasi dapat didorong ke sumber data eksternal. Ini aktif secara default.
PUSHDOWNdidukung 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 pada tingkat kueri dicapai melalui petunjuk.
INFO MASUK = credential_name
Menentukan kredensial lingkup database untuk mengautentikasi ke sumber data eksternal.
Catatan dan panduan tambahan saat membuat kredensial:
CREDENTIALhanya diperlukan jika data telah diamankan.CREDENTIALtidak diperlukan untuk himpunan data yang memungkinkan akses anonim.TYPE=BLOB_STORAGEKetika , kredensial harus dibuat menggunakanSHARED ACCESS SIGNATUREsebagai identitas. Selain itu, token SAS harus dikonfigurasi sebagai berikut:- Kecualikan yang terdepan
?saat dikonfigurasi sebagai rahasia. - Memiliki setidaknya izin baca pada file yang harus dimuat (misalnya
srt=o&sp=r). - Gunakan periode kedaluwarsa yang valid (semua tanggal berada dalam waktu UTC).
TYPE=BLOB_STORAGEhanya diizinkan untuk operasi massal; Anda tidak dapat membuat tabel eksternal untuk sumber data eksternal denganTYPE=BLOB_STORAGE.
- Kecualikan yang terdepan
- Ketika
TYPE=HADOOPkredensial harus dibuat menggunakan kunci akun penyimpanan sebagaiSECRET.
Untuk contoh penggunaan CREDENTIAL dengan SHARED ACCESS SIGNATURE danBLOB_STORAGETYPE = , lihat Membuat sumber data eksternal untuk menjalankan operasi massal dan mengambil data dari Azure Storage ke SQL Database
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 LINGKUP DATABASE (SQL Transact).
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.
- Dalam SQL Server 2019 (15.x), jangan tentukan TYPE kecuali menyambungkan ke Cloudera CDH, Hortonworks HDP, akun Azure Storage.
- Gunakan
HADOOPsaat sumber data eksternal adalah Cloudera CDH, Hortonworks HDP, akun Azure Storage, atau Azure Data Lake Storage Gen2. - Gunakan
BLOB_STORAGEsaat menjalankan operasi massal dari akun Azure Storage menggunakan BULK INSERT, atau OPENROWSET dengan SQL Server 2017 (14.x). GunakanHADOOPsaat berniat membuat TABEL EKSTERNAL terhadap Azure Storage. - SQL Server dukungan untuk sumber data eksternal HDFS Cloudera (CDP) dan Hortonworks (HDP) akan dihentikan dan tidak akan disertakan dalam SQL Server 2022. Untuk informasi selengkapnya, lihat Opsi big data di platform Microsoft SQL Server.
- Jangan tentukan
TYPEuntuk penyimpanan objek yang kompatibel dengan S3.
RESOURCE_MANAGER_LOCATION = 'ResourceManager_URI[:p ort]'
Konfigurasikan nilai opsional ini saat menyambungkan ke Cloudera CDH, Hortonworks HDP, atau akun Azure Storage saja. Di SQL Server 2019 (15.x), jangan tentukan RESOURCE_MANAGER_LOCATION kecuali menyambungkan ke Cloudera CDH, Hortonworks HDP, akun Azure Storage.
RESOURCE_MANAGER_LOCATION Ketika ditentukan, Pengoptimal Kueri akan membuat keputusan berbasis biaya untuk meningkatkan performa. Pekerjaan MapReduce dapat digunakan untuk mendorong 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.
Jika port tidak ditentukan, nilai default dipilih menggunakan pengaturan saat ini untuk konfigurasi 'konektivitas hadoop'.
| Konektivitas Hadoop | Port Resource Manager Default |
|---|---|
| 1 | 50300 |
| 2 | 50300 |
| 3 | 8021 |
| 4 | 8032 |
| 5 | 8050 |
| 6 | 8032 |
| 7 | 8050 |
| 8 | 8032 |
Untuk daftar lengkap versi Hadoop yang didukung, lihat Konfigurasi Konektivitas PolyBase (transact-SQL).
Penting
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.
Buat sumber data eksternal untuk mereferensikan Hadoop dengan push-down diaktifkan memberikan contoh konkret dan panduan lebih lanjut.
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 juga dapat 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]);
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 komputer, 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
Tentukan RESOURCE_MANAGER_LOCATION 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 abs://
Mulai SQL Server Pratinjau 2022 (16.x), gunakan awalan abs baru untuk Akun Azure Storage v2. abs Awalan juga mendukung autentikasi menggunakan Tanda Tangan Akses Bersama. Awalan ini menggantikan yang wasb digunakan dalam versi sebelumnya. Specfying TYPE = HADOOP tidak lagi diperlukan.
Kunci akun penyimpanan Azure tidak lagi diperlukan dalam skenario ini 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>.blob.core.windows.net/' ,
CREDENTIAL = AzureStorageCredentialv2,
) ;
F. Membuat sumber data eksternal untuk mereferensikan SQL Server instans bernama melalui konektivitas PolyBase
Berlaku untuk: SQL Server 2019 (15.x) dan yang lebih baru
Untuk membuat sumber data eksternal yang mereferensikan instans SQL Server bernama, gunakan CONNECTION_OPTIONS untuk menentukan nama instans.
Pertama, buat kredensial lingkup database, simpan kredensial untuk login yang SQL diautentikasi. Konektor SQL ODBC 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 lingkup database, menyediakan login dan kata sandi Anda sendiri.
CREATE DATABASE SCOPED CREDENTIAL SQLServerCredentials
WITH IDENTITY = 'username', SECRET = 'password';
Dalam contoh di bawah ini, 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 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.
Pertama, buat kredensial lingkup database, simpan kredensial untuk login yang SQL diautentikasi. Konektor SQL ODBC 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 lingkup database, menyediakan login dan kata sandi Anda sendiri.
CREATE DATABASE SCOPED CREDENTIAL SQLServerCredentials
WITH IDENTITY = 'username', SECRET = 'password';
Selanjutnya, buat sumber data eksternal baru.
Parameter ODBC Database tidak diperlukan, berikan nama database sebagai gantinya melalui nama tiga bagian dalam pernyataan CREATE EXTERNAL TABLE, dalam parameter LOCATION. Misalnya, lihat CREATE EXTERNAL TABLE.
Dalam contoh di bawah ini, 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' ,
CREDENTIAL = SQLServerCredentials
);
Anda dapat menunjukkan perilaku pengalihan grup ketersediaan dengan menentukan ApplicationIntent dan membuat tabel eksternal pada tampilan sys.serverssistem . 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' ,
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
H. Membuat sumber data eksternal untuk mengkueri file parquet di penyimpanan objek yang kompatibel dengan S3 melalui PolyBase
Berlaku untuk: pratinjau 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 lingkup database.
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 parquet yang disimpan dalam penyimpanan objek yang mematuhi S3 melalui kueri OPENROWSET. Untuk informasi selengkapnya, lihat Virtualisasi file parquet dalam penyimpanan objek yang kompatibel dengan S3 dengan PolyBase.
SELECT *
FROM OPENROWSET
( BULK '/<bucket>/<parquet_folder>'
, FORMAT = 'PARQUET'
, DATA_SOURCE = 's3_ds'
) AS [cc];
i. Membuat sumber data eksternal untuk mengakses data di Azure Data Lake Gen2
Mulai SQL Server Pratinjau 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 pada contoh di bawah 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
)
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.
j. Membuat sumber data eksternal untuk operasi massal yang mengambil data dari Azure Storage
Berlaku untuk: SQL Server 2017 (14.x) dan 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 berada 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 yang digunakan, lihat contoh BULK INSERT .
Langkah berikutnya
* SQL Database *
Ringkasan: 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:
- Operasi pemuatan massal menggunakan
BULK INSERTatauOPENROWSET - Kueri instans SQL Database jarak jauh atau Azure Synapse menggunakan SQL Database dengan kueri elastis
- Mengkueri SQL Database yang dipecah menggunakan kueri elastis
Sintaks
Untuk informasi selengkapnya tentang konvensi sintaks, lihat Konvensi Sintaksis transact-SQL.
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 dalam SQL Database.
LOCATION = '<prefix>://<path[:port]>'
Menyediakan protokol konektivitas dan jalur ke sumber data eksternal.
| Sumber Data Eksternal | Awalan lokasi konektor | Jalur lokasi | Ketersediaan |
|---|---|---|---|
| Operasi Massal | https |
<storage_account>.blob.core.windows.net/<container> |
|
| Elastic Query (shard) | 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. |
Jalur lokasi:
<shard_map_server_name>= Nama server logis di Azure yang menghosting pengelola peta shard. ArgumenDATABASE_NAMEmenyediakan database yang digunakan untuk menghosting peta shard danSHARD_MAP_NAMEdigunakan untuk peta shard itu sendiri.<remote_server_name>= Nama server logis target untuk kueri elastis. Nama database ditentukan menggunakanDATABASE_NAMEargumen .
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 lingkup 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).
CREDENTIALhanya diperlukan jika data telah diamankan.CREDENTIALtidak diperlukan untuk himpunan data yang memungkinkan akses anonim.TYPE=BLOB_STORAGEKetika , kredensial harus dibuat menggunakanSHARED ACCESS SIGNATUREsebagai identitas. Selain itu, token SAS harus dikonfigurasi sebagai berikut:- Mengecualikan yang terdepan
?saat dikonfigurasi sebagai rahasia - Memiliki setidaknya izin baca pada file yang harus dimuat (misalnya
srt=o&sp=r) - Gunakan periode kedaluwarsa yang valid (semua tanggal berada dalam waktu UTC).
TYPE=BLOB_STORAGEhanya diizinkan untuk operasi massal; Anda tidak dapat membuat tabel eksternal untuk sumber data eksternal denganTYPE=BLOB_STORAGE.
- Mengecualikan yang terdepan
- Perhatikan bahwa saat menyambungkan ke Azure Storage melalui konektor WASB,autentikasi harus dilakukan dengan kunci akun penyimpanan, bukan dengan tanda tangan akses bersama (SAS).
- Ketika
TYPE=HADOOPkredensial harus dibuat menggunakan kunci akun penyimpanan sebagaiSECRET.
Untuk contoh penggunaan CREDENTIAL dengan SHARED ACCESS SIGNATURE danBLOB_STORAGETYPE = , 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 LINGKUP DATABASE (SQL Transact).
TYPE = [ BLOB_STORAGE | | RDBMS SHARD_MAP_MANAGER]
Menentukan jenis sumber data eksternal yang sedang dikonfigurasi. Parameter ini tidak selalu diperlukan.
- Gunakan
RDBMSuntuk kueri lintas database menggunakan kueri elastis dari SQL Database. - Gunakan
SHARD_MAP_MANAGERsaat membuat sumber data eksternal saat menyambungkan ke SQL Database yang dipecah. - Gunakan
BLOB_STORAGEsaat menjalankan operasi massal dengan BULK INSERT, atau OPENROWSET.
Penting
Jangan atur TYPE jika menggunakan sumber data eksternal lainnya.
DATABASE_NAME = database_name
Konfigurasikan argumen ini ketika 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 merujuk ke 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.
Misalnya memperlihatkan cara membuat sumber data eksternal di mana 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
A. Membuat sumber data eksternal pengelola 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 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 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 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 = '******srt=sco&sp=rwac&se=2017-02-01T00:55:34Z&st=2016-12-29T16:55:34Z***************' ;
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.
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 pendorongan predikat.
-- Create an External Data Source for Kafka
CREATE EXTERNAL DATA SOURCE MyKafkaServer WITH (
LOCATION = 'kafka://xxx.xxx.xxx.xxx:1900'
)
GO
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 pendorongan predikat.
-- Create an External Data Source for Kafka
CREATE EXTERNAL DATA SOURCE MyEdgeHub WITH (
LOCATION = 'edgehub://'
)
go
Langkah berikutnya
* Azure Synapse
Analitik *
Ringkasan: Azure Synapse Analytics
Berlaku untuk:
analitik Azure Synapse
Membuat sumber data eksternal untuk PolyBase. Sumber data eksternal digunakan untuk membangun konektivitas dan mendukung kasus penggunaan utama virtualisasi data dan beban data menggunakan PolyBase.
Penting
Untuk membuat sumber data eksternal untuk mengkueri sumber daya analitik Azure Synapse menggunakan Azure SQL Database dengan kueri elastis, lihat SQL Database.
Sintaks
Untuk informasi selengkapnya tentang konvensi sintaks, lihat Konvensi Sintaksis Transact-SQL.
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[:port]>'
Menyediakan protokol konektivitas dan jalur ke sumber data eksternal.
| Sumber Data Eksternal | Awalan lokasi konektor | Jalur lokasi |
|---|---|---|
| Azure Data Lake Store Gen 1 | adl |
<storage_account>.azuredatalake.net |
| Azure Data Lake Store Gen 2 | abfs[s] |
<container>@<storage_account>.dfs.core.windows.net |
| Akun Storage Azure V2 | wasb[s] |
<container>@<storage_account>.blob.core.windows.net |
Jalur lokasi:
<container>= kontainer akun penyimpanan yang menyimpan data. Kontainer akar 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 default adalah menggunakan
enable secure SSL connectionssaat menyediakan Azure Data Lake Storage Gen2. Ketika ini diaktifkan, Anda harus menggunakanabfsssaat koneksi TLS/SSL aman dipilih. Catatanabfssjuga 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.
wasbsdisarankan karena data akan dikirim menggunakan koneksi TLS yang aman.- Namespace Hierarkis tidak didukung dengan Akun Storage Azure V2 saat mengakses data melalui PolyBase menggunakan antarmuka wasb://.
INFO MASUK = credential_name
Menentukan kredensial lingkup database untuk mengautentikasi ke sumber data eksternal.
Catatan dan panduan tambahan saat membuat kredensial:
- Untuk memuat data dari Azure Storage atau Azure Data Lake Store (ADLS) Gen 2 ke Azure Synapse Analytics, gunakan Kunci Azure Storage.
CREDENTIALhanya diperlukan jika data telah diamankan.CREDENTIALtidak diperlukan untuk himpunan data yang memungkinkan akses anonim.
Untuk membuat kredensial lingkup database, lihat MEMBUAT KREDENSIAL LINGKUP DATABASE (Transact-SQL).
TYPE = HADOOP
Menentukan jenis sumber data eksternal yang sedang dikonfigurasi. Parameter ini tidak selalu diperlukan.
Gunakan HADOOP saat sumber data eksternal Azure Storage, ADLS Gen 1, atau ADLS Gen 2.
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.
Izin
CONTROL Memerlukan izin pada database.
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
A. Membuat sumber data eksternal untuk mengakses data di Azure Storage menggunakan antarmuka wasb://
Dalam contoh ini, sumber data eksternal adalah akun Storage Azure 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. Perhatikan bahwa saat menyambungkan ke Azure Storage melalui konektor WASB,autentikasi harus dilakukan dengan kunci akun penyimpanan, bukan dengan tanda tangan akses bersama (SAS).
Contoh ini memperlihatkan cara membuat kredensial lingkup database untuk autentikasi agar 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 ADLS URI dan perwakilan layanan Azure Active Directory Application Anda. Dokumentasi untuk membuat aplikasi ini dapat ditemukan di autentikasi Data lake store menggunakan Direktori Aktif.
-- 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 Azure Active Directory 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 Gen 2 - 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 2 account name and URI
-- CREDENTIAL: Provide the credential created in the previous step
CREATE EXTERNAL DATA SOURCE AzureDataLakeStore
WITH
-- Please 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 Gen 2 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 Gen 2 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 untuk mereferensikan konektivitas PolyBase ke Azure Data Lake Store Gen 2 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
) ;
Langkah berikutnya
- CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL)
- BUAT FORMAT FILE EKSTERNAL (TRANSACT-SQL)
- CREATE EXTERNAL TABLE (Transact-SQL)
- CREATE EXTERNAL TABLE AS SELECT (Azure Synapse Analytics)
- CREATE TABLE AS SELECT (Azure Synapse Analytics)
- sys.external_data_sources (SQL Bertransaksi)
- Menggunakan Tanda Tangan Akses Bersama (SAS)
* Analitik
Sistem Platform (PDW) *
Gambaran Umum: Sistem Platform Analitik
Berlaku untuk:
Sistem Platform Analitik (PDW)
Membuat sumber data eksternal untuk kueri PolyBase. Sumber data eksternal digunakan untuk membangun konektivitas dan mendukung kasus penggunaan berikut: Virtualisasi data dan beban data menggunakan PolyBase.
Sintaks
Untuk informasi selengkapnya tentang konvensi sintaks, lihat Konvensi Sintaksis transact-SQL.
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[:port]>'
Menyediakan protokol konektivitas dan jalur 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 komputer, URI layanan nama, atau alamatNamenodeIP 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.defaultFSparameter konfigurasi. Defaultnya adalah 8020.<container>= kontainer akun penyimpanan yang menyimpan data. Kontainer akar 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.
wasbsdisarankan 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 untukNamenodekluster Hadoop. Jika tidak, jalankan perintah UBAH SUMBER DATA EKSTERNAL untuk menunjuk ke lokasi baru.
INFO MASUK = credential_name
Menentukan kredensial lingkup 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.
CREDENTIALhanya diperlukan jika data telah diamankan.CREDENTIALtidak 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]'
Konfigurasikan nilai opsional ini saat menyambungkan ke Cloudera CDH, Hortonworks HDP, atau akun Azure Storage saja.
RESOURCE_MANAGER_LOCATION Ketika ditentukan, pengoptimal kueri akan membuat keputusan berbasis biaya untuk meningkatkan performa. Pekerjaan MapReduce dapat digunakan untuk mendorong 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.
Jika port tidak ditentukan, nilai default dipilih menggunakan pengaturan saat ini untuk konfigurasi 'konektivitas hadoop'.
| Konektivitas Hadoop | Port Resource Manager Default |
|---|---|
| 1 | 50300 |
| 2 | 50300 |
| 3 | 8021 |
| 4 | 8032 |
| 5 | 8050 |
| 6 | 8032 |
| 7 | 8050 |
Untuk daftar lengkap versi Hadoop yang didukung, lihat Konfigurasi Konektivitas PolyBase (transact-SQL).
Penting
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.
Buat sumber data eksternal untuk mereferensikan Hadoop dengan push-down diaktifkan memberikan contoh konkret dan panduan lebih lanjut.
Izin
CONTROL Memerlukan izin pada database di Analytics Platform System (PDW).
Catatan
Dalam rilis PDW sebelumnya, buat izin yang diperlukan ALTER ANY EXTERNAL DATA SOURCE sumber data eksternal.
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
A. Membuat sumber data eksternal untuk mereferensikan Hadoop
Untuk membuat sumber data eksternal untuk mereferensikan Hortonworks HDP atau Cloudera CDH Anda, tentukan nama komputer, 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
Tentukan RESOURCE_MANAGER_LOCATION 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 Storage Azure 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. Perhatikan bahwa saat menyambungkan ke Azure Storage melalui konektor WASB,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 di 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
) ;
Langkah berikutnya
* SQL Managed Instance *
Ringkasan: Azure SQL Managed Instance
Berlaku untuk:
Azure SQL Managed Instance
Membuat Azure SQL Managed Instance sumber data eksternal.
Catatan
Beberapa fungsi fitur PolyBase sedang dalam pratinjau untuk instans terkelola Azure SQL, termasuk kemampuan untuk mengkueri data eksternal (file Parquet) di Azure Data Lake Storage (ADLS) Gen2. Untuk informasi selengkapnya, lihat Virtualisasi data dengan Azure SQL Managed Instance (Pratinjau).
Dalam Azure SQL Managed Instance, sumber data eksternal digunakan untuk membangun konektivitas dan dukungan:
- Operasi pemuatan massal menggunakan
BULK INSERTatauOPENROWSET
Sintaks
Untuk informasi selengkapnya tentang konvensi sintaks, lihat Konvensi Sintaksis transact-SQL.
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
( [ LOCATION = '<prefix>://<path>[:<port>]' ]
[ [ , ] CREDENTIAL = <credential_name> ]
[ [ , ] TYPE = { BLOB_STORAGE } ]
)
[ ; ]
Argumen
data_source_name
Menentukan nama yang ditentukan pengguna untuk sumber data. Nama harus unik dalam database dalam SQL Database.
LOCATION = '<prefix>://<path[:port]>'
Menyediakan protokol konektivitas dan jalur ke sumber data eksternal.
| Sumber Data Eksternal | Awalan lokasi | Jalur lokasi | Ketersediaan |
|---|---|---|---|
| Operasi Massal | https |
<storage_account>.blob.core.windows.net/<container> |
|
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 lingkup 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).
CREDENTIALhanya diperlukan jika data telah diamankan.CREDENTIALtidak diperlukan untuk himpunan data yang memungkinkan akses anonim.TYPE=BLOB_STORAGEKetika , kredensial harus dibuat menggunakanSHARED ACCESS SIGNATUREsebagai identitas. Selain itu, token SAS harus dikonfigurasi sebagai berikut:- Mengecualikan yang terdepan
?saat dikonfigurasi sebagai rahasia - Memiliki setidaknya izin baca pada file yang harus dimuat (misalnya
srt=o&sp=r) - Gunakan periode kedaluwarsa yang valid (semua tanggal berada dalam waktu UTC).
TYPE=BLOB_STORAGEhanya diizinkan untuk operasi massal; Anda tidak dapat membuat tabel eksternal untuk sumber data eksternal denganTYPE=BLOB_STORAGE.
- Mengecualikan yang terdepan
- Perhatikan bahwa saat menyambungkan ke Azure Storage melalui konektor WASB,autentikasi harus dilakukan dengan kunci akun penyimpanan, bukan dengan tanda tangan akses bersama (SAS).
Untuk contoh penggunaan CREDENTIAL dengan SHARED ACCESS SIGNATURE danBLOB_STORAGETYPE = , lihat Membuat sumber data eksternal untuk menjalankan operasi massal dan mengambil data dari Azure Storage ke SQL MI
Untuk membuat kredensial lingkup database, lihat MEMBUAT KREDENSIAL LINGKUP DATABASE (SQL Transact).
TYPE = [ BLOB_STORAGE ]
Menentukan jenis sumber data eksternal yang sedang dikonfigurasi. Parameter ini tidak selalu diperlukan.
- Gunakan
BLOB_STORAGEsaat menjalankan operasi massal dengan BULK INSERT, atau OPENROWSET.
Izin
CONTROL Memerlukan izin pada database di Azure SQL Managed Instance.
Penguncian
Mengambil kunci bersama pada EXTERNAL DATA SOURCE objek .
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.
J. Membuat sumber data eksternal untuk operasi massal yang mengambil data dari Azure Storage
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 berada 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 = '******srt=sco&sp=rwac&se=2017-02-01T00:55:34Z&st=2016-12-29T16:55:34Z***************' ;
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.