Mengakses penyimpanan eksternal menggunakan kumpulan SQL tanpa server di Azure Synapse Analytics
Artikel ini menjelaskan bagaimana pengguna dapat membaca data dari file yang disimpan di Azure Storage di kumpulan SQL tanpa server. Pengguna memiliki opsi berikut untuk mengakses penyimpanan:
- OPENROWSET berfungsi yang memungkinkan kueri ad-hoc atas file di Azure Storage.
- Tabel eksternal yang merupakan struktur data yang sudah ditentukan sebelumnya yang dibangun di atas kumpulan file eksternal.
Pengguna dapat menggunakan metode autentikasi yang berbeda seperti autentikasi passthrough Microsoft Entra (default untuk perwakilan Microsoft Entra) dan autentikasi SAS (default untuk prinsipal SQL).
File kueri menggunakan OPENROWSET
OPENROWSET memungkinkan pengguna untuk mengkueri file eksternal di penyimpanan Azure jika mereka memiliki akses ke penyimpanan. Pengguna yang tersambung ke kumpulan SQL tanpa server harus menggunakan kueri berikut untuk membaca konten file di penyimpanan Azure:
SELECT * FROM
OPENROWSET(BULK 'https://<storage_account>.dfs.core.windows.net/<container>/<path>/*.parquet', format= 'parquet') as rows
Pengguna dapat mengakses penyimpanan menggunakan aturan akses berikut:
- Pengguna Microsoft Entra -
OPENROWSET
akan menggunakan identitas Pemanggil Microsoft Entra untuk mengakses Azure Storage atau mengakses penyimpanan dengan akses anonim. - Pengguna SQL -
OPENROWSET
akan mengakses penyimpanan dengan akses anonim atau dapat ditiru menggunakan token SAS atau identitas terkelola ruang kerja.
Prinsip SQL juga dapat menggunakan OPENROWSET untuk secara langsung meminta file yang dilindungi dengan token SAS atau Identitas Terkelola ruang kerja. Jika pengguna SQL menjalankan fungsi ini, pengguna daya dengan ALTER ANY CREDENTIAL
izin harus membuat kredensial lingkup server yang cocok dengan URL dalam fungsi (menggunakan nama penyimpanan dan kontainer) dan memberikan izin REFERENSI untuk kredensial ini kepada penelepon fungsi OPENROWSET:
EXECUTE AS somepoweruser
CREATE CREDENTIAL [https://<storage_account>.dfs.core.windows.net/<container>]
WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = 'sas token';
GRANT REFERENCES ON CREDENTIAL::[https://<storage_account>.dfs.core.windows.net/<container>] TO sqluser
Jika tidak ada KREDENSIAL tingkat server yang cocok dengan URL, atau pengguna SQL tidak memiliki izin referensi untuk kredensial ini, kesalahan akan dikembalikan. Prinsipal SQL tidak dapat meniru menggunakan beberapa identitas Microsoft Entra.
Catatan
Versi OPENROWSET ini dirancang untuk eksplorasi data yang cepat dan mudah menggunakan autentikasi default. Untuk memanfaatkan peniruan identitas atau Identitas Terkelola, gunakan OPENROWSET dengan DATA_SOURCE yang dijelaskan di bagian berikutnya.
Sumber data kueri menggunakan OPENROWSET
OPENROWSET memungkinkan pengguna untuk mengkueri file yang ditempatkan di beberapa sumber data eksternal:
SELECT * FROM
OPENROWSET(BULK 'file/path/*.parquet',
DATA_SOURCE = MyAzureInvoices,
FORMAT= 'parquet') as rows
Pengguna yang menjalankan kueri ini harus bisa mengakses berkas tersebut. Pengguna harus ditiru menggunakan token SAS atau Identitas Terkelola ruang kerja jika mereka tidak dapat langsung mengakses file menggunakan identitas Microsoft Entra atau akses anonim mereka.
DATABASE SCOPED CREDENTIAL
menentukan cara mengakses file pada sumber data yang direferensikan (saat ini SAS dan Identitas Terkelola). Pengguna daya dengan CONTROL DATABASE
izin perlu membuat DATABASE SCOPED CREDENTIAL
yang akan digunakan untuk mengakses penyimpanan dan EXTERNAL DATA SOURCE
yang menentukan URL sumber data dan kredensial yang harus digunakan:
EXECUTE AS somepoweruser;
-- Create MASTER KEY if it doesn't exists in database
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'some very strong password';
CREATE DATABASE SCOPED CREDENTIAL AccessAzureInvoices
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = '******srt=sco&sp=rwac&se=2017-02-01T00:55:34Z&st=201********' ;
CREATE EXTERNAL DATA SOURCE MyAzureInvoices
WITH ( LOCATION = 'https://<storage_account>.dfs.core.windows.net/<container>/<path>/' ,
CREDENTIAL = AccessAzureInvoices) ;
Penelepon harus memiliki salah satu izin berikut untuk menjalankan fungsi OPENROWSET:
- Salah satu izin untuk menjalankan OPENROWSET:
ADMINISTER BULK OPERATIONS
memungkinkan login untuk menjalankan fungsi OPENROWSET.ADMINISTER DATABASE BULK OPERATIONS
memungkinkan pengguna lingkup database untuk menjalankan fungsi OPENROWSET.
REFERENCES DATABASE SCOPED CREDENTIAL
ke kredensial yang direferensikan diEXTERNAL DATA SOURCE
.
TABEL EKSTERNAL
Pengguna dengan izin membaca tabel dapat mengakses file eksternal menggunakan TABEL EKSTERNAL yang dibuat di atas kumpulan folder dan file Azure Storage.
Pengguna yang memiliki izin untuk membuat tabel eksternal (misalnya CREATE TABLE dan ALTER ANY CREDENTIAL atau REFERENCES DATABASE SCOPED CREDENTIAL) bisa menggunakan skrip berikut untuk membuat tabel di atas sumber data Azure Storage:
CREATE EXTERNAL TABLE [dbo].[DimProductexternal]
( ProductKey int, ProductLabel nvarchar, ProductName nvarchar )
WITH
(
LOCATION='/DimProduct/year=*/month=*' ,
DATA_SOURCE = AzureDataLakeStore ,
FILE_FORMAT = TextFileFormat
) ;
Pengguna yang membaca data dari tabel ini harus dapat mengakses file. Pengguna harus ditiru menggunakan token SAS atau Identitas Terkelola ruang kerja jika mereka tidak dapat langsung mengakses file menggunakan identitas Microsoft Entra atau akses anonim mereka.
DATABASE SCOPED CREDENTIAL menentukan cara mengakses file pada sumber data yang direferensikan. Pengguna dengan izin CONTROL DATABASE perlu membuat DATABASE SCOPED CREDENTIAL yang akan digunakan untuk mengakses penyimpanan dan DATA SOURCE yang menentukan URL sumber data dan kredensial yang harus digunakan:
EXECUTE AS somepoweruser;
-- Create MASTER KEY if it doesn't exists in database
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'some very strong password';
CREATE DATABASE SCOPED CREDENTIAL cred
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = '******srt=sco&sp=rwac&se=2017-02-01T00:55:34Z&st=201********' ;
CREATE EXTERNAL DATA SOURCE AzureDataLakeStore
WITH ( LOCATION = 'https://<storage_account>.dfs.core.windows.net/<container>/<path>' ,
CREDENTIAL = cred
) ;
Membaca file eksternal dengan EXTERNAL TABLE
EXTERNAL TABLE memungkinkan Anda membaca data dari file yang dirujuk melalui sumber data menggunakan pernyataan SQL SELECT standar:
SELECT *
FROM dbo.DimProductsExternal
Penelepon harus memiliki izin berikut untuk membaca data:
SELECT
izin ON tabel eksternalREFERENCES DATABASE SCOPED CREDENTIAL
izin jikaDATA SOURCE
memilikiCREDENTIAL
Izin
Daftar tabel berikut ini memerlukan izin untuk operasi yang tercantum di atas.
Kueri | Memerlukan izin |
---|---|
OPENROWSET(BULK) tanpa sumber data | ADMINISTER BULK OPERATIONS , ADMINISTER DATABASE BULK OPERATIONS , atau data masuk SQL harus memiliki REFERENCES CREDENTIAL::<URL> untuk penyimpanan yang dilindungi SAS |
OPENROWSET(BULK) dengan sumber data tanpa kredensial | ADMINISTER BULK OPERATIONS atau ADMINISTER DATABASE BULK OPERATIONS , |
OPENROWSET(BULK) dengan sumber data dengan kredensial | REFERENCES DATABASE SCOPED CREDENTIAL dan salah satu ADMINISTER BULK OPERATIONS atau ADMINISTER DATABASE BULK OPERATIONS |
CREATE EXTERNAL DATA SOURCE | ALTER ANY EXTERNAL DATA SOURCE dan REFERENCES DATABASE SCOPED CREDENTIAL |
CREATE EXTERNAL TABLE | CREATE TABLE , ALTER ANY SCHEMA , ALTER ANY EXTERNAL FILE FORMAT , dan ALTER ANY EXTERNAL DATA SOURCE |
SELECT FROM EXTERNAL TABLE | SELECT TABLE dan REFERENCES DATABASE SCOPED CREDENTIAL |
CETAS | Untuk membuat tabel - CREATE TABLE , ALTER ANY SCHEMA , ALTER ANY DATA SOURCE , dan ALTER ANY EXTERNAL FILE FORMAT . Untuk membaca data: ADMINISTER BULK OPERATIONS atau REFERENCES CREDENTIAL atau SELECT TABLE per setiap tabel/tampilan/fungsi dalam kueri + izin R/W pada penyimpanan |
Langkah berikutnya
Sekarang Anda siap untuk melanjutkan artikel Cara Menggunakan berikut ini:
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk