Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, kullanıcıların sunucusuz SQL havuzunda Azure Depolama'da depolanan dosyalardan verileri nasıl okuyabileceği açıklanmaktadır. Kullanıcılar depolamaya erişmek için aşağıdaki seçeneklere sahiptir:
- OpenROWSET işlevi, Azure Depolama'daki dosyalar üzerinde geçici sorgular sağlar.
- Dış tablo , dış dosya kümesinin üzerine kurulmuş önceden tanımlanmış bir veri yapısıdır.
Kullanıcı, Microsoft Entra geçiş kimlik doğrulaması (Microsoft Entra sorumluları için varsayılan) ve SAS kimlik doğrulaması (SQL sorumluları için varsayılan) gibi farklı kimlik doğrulama yöntemleri kullanabilir.
OPENROWSET kullanarak dosyaları sorgulama
OPENROWSET, kullanıcıların depolama alanına erişimi varsa Azure depolamadaki dış dosyaları sorgulamasına olanak tanır. Sunucusuz SQL havuzuna bağlı bir kullanıcı, Azure depolamadaki dosyaların içeriğini okumak için aşağıdaki sorguyu kullanmalıdır:
SELECT * FROM
OPENROWSET(BULK 'https://<storage_account>.dfs.core.windows.net/<container>/<path>/*.parquet', format= 'parquet') as rows
Kullanıcı aşağıdaki erişim kurallarını kullanarak depolamaya erişebilir:
- Microsoft Entra kullanıcısı -
OPENROWSET, Azure Depolama'ya erişmek veya anonim erişimle depolamaya erişmek için çağıranın Microsoft Entra kimliğini kullanır. - SQL kullanıcısı –
OPENROWSET, anonim erişimle depolamaya erişecek veya çalışma alanının SAS belirteci veya Yönetilen kimliği kullanılarak taklit edilebilir.
SQL sorumluları, ÇALıŞMA alanının SAS belirteçleri veya Yönetilen Kimliği ile korunan dosyaları doğrudan sorgulamak için OPENROWSET'i de kullanabilir. Bir SQL kullanıcısı bu işlevi yürüttüğünde, ALTER ANY CREDENTIAL iznine sahip bir yetkili kullanıcı, işlevdeki URL ile eşleşen (depolama adı ve kapsayıcı kullanarak) sunucu kapsamlı bir kimlik bilgisi oluşturmalı ve OPENROWSET işlevini çağıran kişiye bu kimlik bilgisi için REFERENCES izni vermelidir.
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
URL ile eşleşen sunucu düzeyinde KIMLIK BILGISI yoksa veya SQL kullanıcısının bu kimlik bilgisi için başvuru izni yoksa hata döndürülür. SQL sorumluları bazı Microsoft Entra kimliklerini kullanarak kimliğine bürünemez.
Uyarı
OPENROWSET'in bu sürümü, varsayılan kimlik doğrulaması kullanılarak hızlı ve kolay veri keşfi için tasarlanmıştır. Kimliğe bürünme veya Yönetilen Kimlik'i kullanmak için, sonraki bölümde açıklanan DATA_SOURCE ile OPENROWSET'i kullanın.
OPENROWSET kullanarak veri kaynaklarını sorgulama
OPENROWSET, kullanıcının bazı dış veri kaynaklarına yerleştirilen dosyaları sorgulamasına olanak tanır:
SELECT * FROM
OPENROWSET(BULK 'file/path/*.parquet',
DATA_SOURCE = MyAzureInvoices,
FORMAT= 'parquet') as rows
Bu sorguyu yürüten kullanıcının dosyalara erişebilmesi gerekir. Dosyalara kendi Microsoft Entra kimlikleri veya anonim erişimkullanarak doğrudan erişemiyorlarsa, kullanıcıların, SAS belirteci veya çalışma alanının Yönetilen Kimliği kullanılarak kimliğine bürünülmeleri gerekir.
DATABASE SCOPED CREDENTIAL, başvuruda bulunan veri kaynağındaki dosyalara (şu anda SAS ve Yönetilen Kimlik) nasıl erişildiğini belirtir.
CONTROL DATABASE izni olan power user'ın depolamaya erişmek için kullanılacak DATABASE SCOPED CREDENTIAL oluşturması ve kullanılacak veri kaynağının VE kimlik bilgilerinin URL'sini belirten EXTERNAL DATA SOURCE oluşturması gerekir:
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) ;
Çağıranın OPENROWSET işlevini yürütmek için aşağıdaki izinlerden birine sahip olması gerekir:
- OPENROWSET yürütme izinlerinden biri:
-
ADMINISTER BULK OPERATIONSOPENROWSET işlevini yürütmek için oturum açmayı etkinleştirir. -
ADMINISTER DATABASE BULK OPERATIONSveritabanı kapsamındaki kullanıcının OPENROWSET işlevini yürütmesini sağlar.
-
-
EXTERNAL DATA SOURCE'de atıfta bulunulan kimlik bilgisineREFERENCES DATABASE SCOPED CREDENTIAL.
DıŞ TABLO
Tabloyu okuma izinlerine sahip olan kullanıcı, Azure Depolama klasörleri ve dosyaları kümesi üzerinde oluşturulan bir EXTERNAL TABLE kullanarak dış dosyalara erişebilir.
Dış tablo oluşturmak için izinlerine sahip olan kullanıcı (örneğin CREATE TABLE ve ALTER ANY CREDENTIAL veya REFERENCES DATABASE SCOPED CREDENTIAL) Azure Depolama veri kaynağının üzerinde bir tablo oluşturmak için aşağıdaki betiği kullanabilir:
CREATE EXTERNAL TABLE [dbo].[DimProductexternal]
( ProductKey int, ProductLabel nvarchar, ProductName nvarchar )
WITH
(
LOCATION='/DimProduct/year=*/month=*' ,
DATA_SOURCE = AzureDataLakeStore ,
FILE_FORMAT = TextFileFormat
) ;
Bu tablodan veri okuyan kullanıcının dosyalara erişebilmesi gerekir. Kullanıcılar, Microsoft Entra kimlikleri veya anonim erişimkullanarak dosyalara doğrudan erişemiyorsa, SAS belirteci veya çalışma alanı için Yönetilen Kimlik kullanılarak kimliklerine bürünülmeleri gerekir.
DATABASE SCOPED CREDENTIAL, başvuruda bulunan veri kaynağındaki dosyalara nasıl erişeceklerini belirtir. CONTROL DATABASE iznine sahip kullanıcının, depolamaya erişmek için kullanılacak DATABASE SCOPED CREDENTIAL ve kullanılması gereken veri kaynağının URL'sini ve kimlik bilgilerini belirten EXTERNAL DATA SOURCE oluşturması gerekir:
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
) ;
EXTERNAL TABLE ile dış dosyaları okuma
EXTERNAL TABLE, standart SQL SELECT deyimini kullanarak veri kaynağı aracılığıyla başvuruda bulunılan dosyalardan verileri okumanızı sağlar:
SELECT *
FROM dbo.DimProductsExternal
Çağıranın verileri okumak için aşağıdaki izinlere sahip olması gerekir:
- dış tabloda
SELECTizni AÇIK -
REFERENCES DATABASE SCOPED CREDENTIALizni varsaDATA SOURCECREDENTIAL
İzinler
Aşağıdaki tabloda, yukarıda listelenen işlemler için gerekli izinler listelenmiştir.
| Soru | Gerekli izinler |
|---|---|
| Veri kaynağı olmadan OPENROWSET(BULK) |
ADMINISTER BULK OPERATIONS, ADMINISTER DATABASE BULK OPERATIONSveya SQL oturum açma bilgileri, SAS korumalı depolama için REFERANS KİMLİK BİLGİLERİ::<URL>'e sahip olmalıdır. |
| Kimlik bilgisi olmadan veri kaynağı ile OPENROWSET(BULK) kullanımı |
ADMINISTER BULK OPERATIONS veya ADMINISTER DATABASE BULK OPERATIONS. |
| Kimlik bilgilerine sahip veri kaynağı ile OPENROWSET(BULK) |
REFERENCES DATABASE SCOPED CREDENTIAL ve ADMINISTER BULK OPERATIONS veya ADMINISTER DATABASE BULK OPERATIONS'den biri |
| DıŞ VERI KAYNAĞı OLUŞTURMA |
ALTER ANY EXTERNAL DATA SOURCE ve REFERENCES DATABASE SCOPED CREDENTIAL |
| Harici Tablo Oluştur |
CREATE TABLE, ALTER ANY SCHEMA, ALTER ANY EXTERNAL FILE FORMATve ALTER ANY EXTERNAL DATA SOURCE |
| DıŞ TABLODAN SEÇ |
SELECT TABLE ve REFERENCES DATABASE SCOPED CREDENTIAL |
| CETAS | Tablo oluşturmak için - CREATE TABLE, ALTER ANY SCHEMA, ALTER ANY DATA SOURCEve ALTER ANY EXTERNAL FILE FORMAT. Verileri okumak için: sorgudaki her tablo/görünüm/işlev için ADMINISTER BULK OPERATIONS veya REFERENCES CREDENTIAL ya da SELECT TABLE + Depolama üzerindeki R/W izni |
Sonraki adımlar
Artık aşağıdaki Nasıl Yapılır makaleleriyle devam etmeye hazırsınız:
Depolama verileri sorgulama
Bölümleme ve meta veri işlevlerini kullanma