Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek popisuje, jak můžou uživatelé číst data ze souborů uložených ve službě Azure Storage v bezserverovém fondu SQL. Uživatelé mají pro přístup k úložišti následující možnosti:
- Funkce OPENROWSET, která umožňuje ad hoc dotazy na soubory ve službě Azure Storage.
- Externí tabulka , která je předdefinovaná datová struktura založená na sadě externích souborů.
Uživatel může používat různé metody ověřování , jako je ověřování Microsoft Entra passthrough (výchozí pro objekty zabezpečení Microsoft Entra) a ověřování SAS (výchozí pro objekty zabezpečení SQL).
Dotazování souborů pomocí OPENROWSET
OPENROWSET umožňuje uživatelům dotazovat se na externí soubory v úložišti Azure, pokud mají přístup k úložišti. Uživatel, který je připojený k bezserverovém fondu SQL, by měl ke čtení obsahu souborů v úložišti Azure použít následující dotaz:
SELECT * FROM
OPENROWSET(BULK 'https://<storage_account>.dfs.core.windows.net/<container>/<path>/*.parquet', format= 'parquet') as rows
Uživatel má přístup k úložišti pomocí následujících pravidel přístupu:
- Uživatel Microsoft Entra –
OPENROWSETpoužije identitu volajícího Microsoft Entra pro přístup ke službě Azure Storage nebo přístupu k úložišti s anonymním přístupem. - Uživatel SQL –
OPENROWSETbude mít přístup k úložišti s anonymním přístupem nebo může být zosobněný pomocí tokenu SAS nebo spravované identity pracovního prostoru.
Objekty zabezpečení SQL můžou také použít OPENROWSET k přímému dotazování souborů chráněných pomocí tokenů SAS nebo spravované identity pracovního prostoru. Pokud uživatel SQL tuto funkci spustí, musí pokročilý uživatel s oprávněním ALTER ANY CREDENTIAL vytvořit serverový rozsah přihlašovacích údajů, které odpovídají adrese URL ve funkci (pomocí názvu úložiště a kontejneru), a udělit oprávnění REFERENCES k těmto přihlašovacím údajům volajícímu funkci 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
Pokud neexistují přihlašovací údaje na úrovni serveru, které odpovídají adrese URL, nebo pokud uživatel SQL nemá oprávnění k referencování těchto přihlašovacích údajů, vrátí se chyba. Účty SQL nemohou využít identitu Microsoft Entra k zosobnění.
Poznámka:
Tato verze OPENROWSET je navržená pro rychlé a snadné zkoumání dat pomocí výchozího ověřování. Pokud chcete využít zosobnění nebo spravovanou identitu, použijte OPENROWSET s DATA_SOURCE popsanými v další části.
Dotazování zdrojů dat pomocí OPENROWSET
OPENROWSET umožňuje uživateli dotazovat se na soubory umístěné v některém externím zdroji dat:
SELECT * FROM
OPENROWSET(BULK 'file/path/*.parquet',
DATA_SOURCE = MyAzureInvoices,
FORMAT= 'parquet') as rows
Uživatel, který spustí tento dotaz, musí mít přístup k souborům. Uživatelé musí být zastupováni pomocí tokenu SAS nebo spravované identity pracovního prostoru, pokud nemají přímý přístup k souborům pomocí jejich identity Microsoft Entra nebo prostřednictvím anonymního přístupu.
DATABASE SCOPED CREDENTIAL určuje, jak získat přístup k souborům v odkazovaném zdroji dat (aktuálně SAS a spravovaná identita). Uživatel s oprávněním CONTROL DATABASE by potřeboval vytvořit DATABASE SCOPED CREDENTIAL, které bude použito pro přístup k úložnému prostoru, a EXTERNAL DATA SOURCE, které specifikuje URL zdroje dat a přihlašovací údaje, které by měly být použity.
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) ;
Volající musí mít k provedení funkce OPENROWSET jednu z následujících oprávnění:
- Jedno z oprávnění ke spuštění OPENROWSET:
-
ADMINISTER BULK OPERATIONSumožňuje přihlášení ke spuštění funkce OPENROWSET. -
ADMINISTER DATABASE BULK OPERATIONSpovoluje uživateli s oborem databáze spouštět funkci OPENROWSET.
-
-
REFERENCES DATABASE SCOPED CREDENTIALpřihlašovacího údaje, na který se odkazuje vEXTERNAL DATA SOURCE.
EXTERNÍ TABULKA
Uživatel s oprávněními ke čtení tabulky má přístup k externím souborům pomocí externí tabulky vytvořené nad sadou složek a souborů Azure Storage.
Uživatel s oprávněními k vytvoření externí tabulky (například CREATE TABLE a ALTER ANY CREDENTIAL nebo REFERENCES DATABASE SCOPED CREDENTIAL) může pomocí následujícího skriptu vytvořit tabulku nad zdrojem dat Azure Storage:
CREATE EXTERNAL TABLE [dbo].[DimProductexternal]
( ProductKey int, ProductLabel nvarchar, ProductName nvarchar )
WITH
(
LOCATION='/DimProduct/year=*/month=*' ,
DATA_SOURCE = AzureDataLakeStore ,
FILE_FORMAT = TextFileFormat
) ;
Uživatel, který čte data z této tabulky, musí mít přístup k souborům. Uživatelé musí být imitováni pomocí tokenu SAS nebo spravovanou identitou pracovního prostoru pokud nemají přímý přístup k souborům pomocí identity Microsoft Entra nebo anonymního přístupu.
DATABASE SCOPED CREDENTIAL určuje, jak získat přístup k souborům v odkazovaném zdroji dat. Uživatel s oprávněním CONTROL DATABASE by potřeboval vytvořit PŘIHLAŠOVACÍ ÚDAJE V RÁMCI DATABÁZE, které se použijí pro přístup k úložišti a EXTERNÍ ZDROJ DAT, který specifikuje adresu URL zdroje dat a přihlašovací údaje, které by se měly použít:
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
) ;
Čtení externích souborů pomocí EXTERNÍ TABULKY
EXTERNÍ TABULKA umožňuje číst data ze souborů odkazovaných prostřednictvím zdroje dat pomocí standardního příkazu SQL SELECT:
SELECT *
FROM dbo.DimProductsExternal
Volající musí mít následující oprávnění ke čtení dat:
-
SELECTOprávnění na externí tabulku -
REFERENCES DATABASE SCOPED CREDENTIALoprávnění, pokudDATA SOURCEmáCREDENTIAL
Dovolení
Následující tabulka uvádí požadovaná oprávnění pro výše uvedené operace.
| Dotaz | Požadovaná oprávnění |
|---|---|
| OPENROWSET(BULK) bez zdroje dat |
ADMINISTER BULK OPERATIONS, ADMINISTER DATABASE BULK OPERATIONSnebo přihlášení SQL musí obsahovat ODKAZY CREDENTIAL::<URL> pro úložiště chráněné SAS. |
| OPENROWSET(BULK) s datovým zdrojem bez přihlašovacích údajů |
ADMINISTER BULK OPERATIONS nebo ADMINISTER DATABASE BULK OPERATIONS, |
| OPENROWSET(BULK) s datovým zdrojem s přihlašovacími údaji |
REFERENCES DATABASE SCOPED CREDENTIAL a jednu z ADMINISTER BULK OPERATIONS nebo ADMINISTER DATABASE BULK OPERATIONS |
| VYTVOŘENÍ EXTERNÍHO ZDROJE DAT |
ALTER ANY EXTERNAL DATA SOURCE a REFERENCES DATABASE SCOPED CREDENTIAL |
| VYTVOŘENÍ EXTERNÍ TABULKY |
CREATE TABLE, ALTER ANY SCHEMA, ALTER ANY EXTERNAL FILE FORMATa ALTER ANY EXTERNAL DATA SOURCE |
| VÝBĚR Z EXTERNÍ TABULKY |
SELECT TABLE a REFERENCES DATABASE SCOPED CREDENTIAL |
| CETAS | Vytvoření tabulky - CREATE TABLE, ALTER ANY SCHEMA, ALTER ANY DATA SOURCEa ALTER ANY EXTERNAL FILE FORMAT. Čtení dat: ADMINISTER BULK OPERATIONS nebo REFERENCES CREDENTIALSELECT TABLE pro každou tabulku, zobrazení nebo funkci v dotazu + R/W oprávnění k úložišti |
Další kroky
Teď jste připraveni pokračovat v následujících článcích s postupy: