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.
Platí pro:Azure SQL Managed Instance
Tento článek popisuje funkci virtualizace dat služby Azure SQL Managed Instance. Virtualizace dat umožňuje spouštět dotazy Transact-SQL (T-SQL) na soubory, které ukládají data v běžných formátech dat ve službě Azure Data Lake Storage Gen2 nebo Azure Blob Storage. Tato data můžete kombinovat s místně uloženými relačními daty pomocí spojení. Díky virtualizaci dat můžete transparentně přistupovat k externím datům v režimu jen pro čtení a zachovat je v původním formátu a umístění.
Přehled
Virtualizace dat nabízí dva způsoby dotazování souborů určených pro různé sady scénářů:
- Syntaxe OPENROWSET: Optimalizováno pro ad hoc dotazování souborů. Obvykle se používá k rychlému prozkoumání obsahu a struktury nové sady souborů.
- SYNTAXE CREATE EXTERNAL TABLE: Optimalizováno pro opakované dotazování souborů pomocí stejné syntaxe, jako kdyby byla data uložená místně v databázi. Externí tabulky vyžadují v porovnání se syntaxí OPENROWSET několik kroků přípravy, ale umožňují větší kontrolu nad přístupem k datům. Pro analytické úlohy a vytváření sestav používejte externí tabulky.
V obou případech vytvořte externí zdroj dat pomocí syntaxe CREATE EXTERNAL DATA SOURCE T-SQL, jak je znázorněno v tomto článku.
Syntaxe CREATE EXTERNAL TABLE AS SELECT je dostupná také pro spravovanou instanci Azure SQL. To je export výsledků příkazu T-SQL SELECT do souborů Parquet nebo CSV ve službě Azure Blob Storage nebo Azure Data Lake Storage (ADLS) Gen2 a vytvoření externí tabulky nad těmito soubory.
Formáty souborů
Formáty souborů Parquet a text s oddělovači (CSV) jsou podporovány přímo. Formát souboru JSON je nepřímo podporován zadáním formátu SOUBORU CSV, ve kterém dotazy vrací každý dokument jako samostatný řádek. Řádky můžete dále analyzovat pomocí JSON_VALUE a OPENJSON.
Typy úložiště
Ukládejte soubory ve službě Azure Data Lake Storage Gen2 nebo Azure Blob Storage. K dotazování souborů zadejte umístění v určitém formátu a použijte předponu typu umístění, která odpovídá typu externího zdroje a koncového bodu nebo protokolu, například v následujících příkladech:
--Blob Storage endpoint
abs://<container>@<storage_account>.blob.core.windows.net/<path>/<file_name>.parquet
--Data Lake endpoint
adls://<container>@<storage_account>.dfs.core.windows.net/<path>/<file_name>.parquet
Důležité
Zadanou předponu typu umístění se používá k výběru optimálního protokolu pro komunikaci a k používání všech pokročilých funkcí nabízených konkrétním typem úložiště.
Použití obecné https:// předpony je zakázáno. Vždy používejte předpony specifické pro koncový bod.
Začínáme
Pokud s virtualizací dat začínáte a chcete rychle testovat funkce, začněte dotazováním veřejných datových sad dostupných v Azure Open Datasets, jako je datová sada Bingu COVID-19 , která umožňuje anonymní přístup.
K dotazování datových sad Bingu COVID-19 použijte následující koncové body:
- Parkety:
abs://public@pandemicdatalake.blob.core.windows.net/curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.parquet - CSV:
abs://public@pandemicdatalake.blob.core.windows.net/curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.csv
Pro rychlý start spusťte dotaz T-SQL, abyste získali první přehled o datové sadě. Tento dotaz používá OPENROWSET k dotazování souboru uloženého v veřejně dostupném účtu úložiště:
--Quick query on a file stored in a publicly available storage account:
SELECT TOP 10 *
FROM OPENROWSET(
BULK 'abs://public@pandemicdatalake.blob.core.windows.net/curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.parquet',
FORMAT = 'parquet'
) AS filerows
Zkoumání množiny dat můžete pokračovat připojením WHEREGROUP BYa dalšími klauzulemi na základě sady výsledků prvního dotazu.
Pokud první dotaz ve spravované instanci SQL selže, pravděpodobně má tato instance omezený přístup k účtům úložiště Azure. Než budete pokračovat v dotazování, obraťte se na odborníka na sítě a povolte přístup.
Pokud znáte dotazování veřejných datových sad, zvažte přepnutí na nepublikované datové sady, které vyžadují zadání přihlašovacích údajů, udělení přístupových práv a konfiguraci pravidel brány firewall. V mnoha reálných scénářích pracujete primárně s privátními datovými sadami.
Přístup k nepublikickým účtům úložiště
Uživatel, který se přihlásí ke spravované instanci SQL, musí mít oprávnění pro přístup k souborům uloženým v nepublikovém účtu úložiště a dotazování na soubory. Postup autorizace závisí na tom, jak se spravovaná instance SQL ověřuje v účtu úložiště. Typ ověřování a všechny související parametry nejsou k dispozici přímo s každým dotazem. Objekt přihlašovacích údajů omezených na databázi, uložený v uživatelské databázi, zapouzdřuje tyto informace. Databáze používá přihlašovací údaje pro přístup k účtu úložiště při každém spuštění dotazu.
Spravovaná instance Azure SQL podporuje následující typy ověřování:
- Spravovaná identita
- Sdílený přístupový podpis (SAS)
Spravovaná identita je funkce Microsoft Entra ID (dříve Azure Active Directory), která poskytuje služby Azure , jako je Azure SQL Managed Instance, s identitou spravovanou v Microsoft Entra ID. Tuto identitu můžete použít k autorizaci požadavků na přístup k datům v nepublikovaných účtech úložiště. Služby, jako je Azure SQL Managed Instance, mají spravovanou identitu přiřazenou systémem a můžou mít také jednu nebo více spravovaných identit přiřazených uživatelem. Můžete použít spravované identity přiřazené systémem nebo spravované identity přiřazené uživatelem pro virtualizaci dat pomocí azure SQL Managed Instance.
Správce úložiště Azure musí nejprve udělit oprávnění spravované identitě pro přístup k datům. Udělte oprávnění spravované identitě spravované instance SQL přiřazenou systémem stejným způsobem, jakým udělujete oprávnění každému jinému uživateli Microsoft Entra. Příklad:
- Na webu Azure Portal na stránce Řízení přístupu (IAM) účtu úložiště vyberte Přidat přiřazení role.
- Zvolte předdefinované role Azure RBAC pro čtečku dat objektů blob úložiště. Tato role poskytuje přístup pro čtení ke spravované identitě pro nezbytné kontejnery Azure Blob Storage.
- Místo udělení spravované identity roli Azure RBAC čtenáře dat objektů blob služby Storage můžete také udělit podrobnější oprávnění k podmnožině souborů. Všichni uživatelé, kteří potřebují přístup ke čtení jednotlivých souborů v těchto datech, musí mít také oprávnění Spustit pro všechny nadřazené složky až do kořenového adresáře (kontejneru). Další informace najdete v tématu Nastavení seznamů ACL v Azure Data Lake Storage Gen2.
- Na další stránce vyberte Přiřadit přístup kespravované identitě. Vyberte a vyberte členy a v rozevíracím seznamu Spravované identity vyberte požadovanou spravovanou identitu. Další informace viz Přiřazení rolí Azure pomocí webu Azure Portal.
- Pak vytvořte přihlašovací údaje s vymezeným oborem databáze pro ověřování spravované identity. Všimněte si v následujícím příkladu, že
'Managed Identity'je pevně zakódovaný řetězec.
-- Optional: Create MASTER KEY if it doesn't exist in the database:
-- CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Some Very Strong Password Here>'
GO
CREATE DATABASE SCOPED CREDENTIAL MyCredential
WITH IDENTITY = 'Managed Identity'
Externí zdroj dat
Externí zdroj dat je abstrakce, která poskytuje snadný odkaz na umístění souboru napříč několika dotazy. Pokud chcete zadat dotaz na veřejná umístění, zadejte umístění souboru při vytváření externího zdroje dat:
CREATE EXTERNAL DATA SOURCE MyExternalDataSource
WITH (
LOCATION = 'abs://public@pandemicdatalake.blob.core.windows.net/curated/covid-19/bing_covid-19_data/latest'
)
Pokud chcete získat přístup k nepublikovaným účtům úložiště, zadejte umístění a odkazujte na přihlašovací údaje s oborem databáze s zapouzdřenými ověřovacími parametry. Následující skript vytvoří externí zdroj dat, který odkazuje na cestu k souboru a odkazuje na přihlašovací údaje v oboru databáze:
-- Create external data source that points to the file path, and that references a database scoped credential:
CREATE EXTERNAL DATA SOURCE MyPrivateExternalDataSource
WITH (
LOCATION = 'abs://public@pandemicdatalake.blob.core.windows.net/curated/covid-19/bing_covid-19_data/latest'
CREDENTIAL = [MyCredential];
)
Dotazování na zdroje dat pomocí funkce OPENROWSET
Syntaxe OPENROWSET umožňuje okamžité ad hoc dotazování při vytváření pouze minimálního počtu potřebných databázových objektů.
OPENROWSETVyžaduje pouze vytvoření externího zdroje dat (a případně přihlašovací údaje) na rozdíl od přístupu externí tabulky, který vyžaduje formát externího souboru a samotnou externí tabulku.
Hodnota DATA_SOURCE parametru se automaticky předpíná k parametru BULK, aby se vytvořila úplná cesta k souboru.
Při použití OPENROWSETzadejte formát souboru, například následující příklad, který dotazuje jeden soubor:
SELECT TOP 10 *
FROM OPENROWSET(
BULK 'bing_covid-19_data.parquet',
DATA_SOURCE = 'MyExternalDataSource',
FORMAT = 'parquet'
) AS filerows;
Dotazování na více souborů a složek
Příkaz OPENROWSET také umožňuje dotazování více souborů nebo složek pomocí zástupných znaků v cestě BULK.
V následujícím příkladu se používá žlutá taxislužba záznamy otevřené datové sady.
Nejprve vytvořte externí zdroj dat:
--Create the data source first:
CREATE EXTERNAL DATA SOURCE NYCTaxiExternalDataSource
WITH (LOCATION = 'abs://nyctlc@azureopendatastorage.blob.core.windows.net');
Teď můžete dotazovat všechny soubory s příponou .parquet ve složkách. Následující dotaz je například pouze pro soubory odpovídající vzoru názvu:
--Query all files with .parquet extension in folders matching name pattern:
SELECT TOP 10 *
FROM OPENROWSET(
BULK 'yellow/puYear=*/puMonth=*/*.parquet',
DATA_SOURCE = 'NYCTaxiExternalDataSource',
FORMAT = 'parquet'
) AS filerows;
Při dotazování více souborů nebo složek musí mít všechny soubory, ke kterým se přistupuje pomocí jediné OPENROWSET struktury (například stejný počet sloupců a datových typů). Složky se nedají rekurzivně přecházet.
Odvozování schémat
Automatické odvozování schématu vám pomůže rychle psát dotazy a zkoumat data, když neznáte schémata souborů. Odvození schématu funguje jenom se soubory parquet.
I když je to praktické, odvozené datové typy můžou být větší než skutečné datové typy, protože ve zdrojových souborech nemusí být dostatek informací, aby se zajistilo použití příslušného datového typu. To může vést k nízkému výkonu dotazů. Například soubory parquet neobsahují metadata o maximální délce sloupce znaků, takže instance ji odvodí jako varchar(8000).
Ke kontrole výsledných datových typů dotazu použijte uloženou proceduru sp_describe_first_results_set, jako je tomu například v následujícím příkladu:
EXEC sp_describe_first_result_set N'
SELECT
vendorID, tpepPickupDateTime, passengerCount
FROM
OPENROWSET(
BULK ''yellow/*/*/*.parquet'',
DATA_SOURCE = ''NYCTaxiExternalDataSource'',
FORMAT=''parquet''
) AS nyc';
Jakmile znáte datové typy, zadejte je pomocí WITH klauzule ke zlepšení výkonu:
SELECT TOP 100
vendorID, tpepPickupDateTime, passengerCount
FROM
OPENROWSET(
BULK 'yellow/*/*/*.parquet',
DATA_SOURCE = 'NYCTaxiExternalDataSource',
FORMAT='PARQUET'
)
WITH (
vendorID varchar(4), -- we're using length of 4 instead of the inferred 8000
tpepPickupDateTime datetime2,
passengerCount int
) AS nyc;
Vzhledem k tomu, že schéma souborů CSV nelze automaticky určit, vždy zadejte sloupce pomocí WITH klauzule:
SELECT TOP 10 id, updated, confirmed, confirmed_change
FROM OPENROWSET(
BULK 'bing_covid-19_data.csv',
DATA_SOURCE = 'MyExternalDataSource',
FORMAT = 'CSV',
FIRSTROW = 2
)
WITH (
id int,
updated date,
confirmed int,
confirmed_change int
) AS filerows;
Funkce metadat souborů
Při dotazování na více souborů nebo složek můžete použít filepath() a filename() funkce ke čtení metadat souborů a získání části cesty nebo úplné cesty a názvu souboru, ze kterého pochází řádek v sadě výsledků:
--Query all files and project file path and file name information for each row:
SELECT TOP 10 filerows.filepath(1) as [Year_Folder], filerows.filepath(2) as [Month_Folder],
filerows.filename() as [File_name], filerows.filepath() as [Full_Path], *
FROM OPENROWSET(
BULK 'yellow/puYear=*/puMonth=*/*.parquet',
DATA_SOURCE = 'NYCTaxiExternalDataSource',
FORMAT = 'parquet') AS filerows;
--List all paths:
SELECT DISTINCT filerows.filepath(1) as [Year_Folder], filerows.filepath(2) as [Month_Folder]
FROM OPENROWSET(
BULK 'yellow/puYear=*/puMonth=*/*.parquet',
DATA_SOURCE = 'NYCTaxiExternalDataSource',
FORMAT = 'parquet') AS filerows;
Při zavolání bez parametru filepath() vrátí funkce cestu k souboru, ze které řádek pochází. Při DATA_SOURCE použití vrátí OPENROWSETcestu vzhledem k objektu DATA_SOURCE, jinak vrátí úplnou cestu k souboru.
Při zavolání s parametrem vrátí část cesty, která odpovídá zástupným znakům na pozici zadané v parametru. Například hodnota parametru 1 vrátí část cesty, která odpovídá prvnímu zástupnému znaku.
Funkci filepath() lze také použít k filtrování a agregaci řádků:
SELECT
r.filepath() AS filepath
,r.filepath(1) AS [year]
,r.filepath(2) AS [month]
,COUNT_BIG(*) AS [rows]
FROM OPENROWSET(
BULK 'yellow/puYear=*/puMonth=*/*.parquet',
DATA_SOURCE = 'NYCTaxiExternalDataSource',
FORMAT = 'parquet'
) AS r
WHERE
r.filepath(1) IN ('2017')
AND r.filepath(2) IN ('10', '11', '12')
GROUP BY
r.filepath()
,r.filepath(1)
,r.filepath(2)
ORDER BY
filepath;
Vytvoření zobrazení nad OPENROWSET
Zobrazení můžete vytvořit a použít k zabalení dotazů OPENROWSET, abyste mohli snadno použít základní dotaz:
CREATE VIEW TaxiRides AS
SELECT *
FROM OPENROWSET(
BULK 'yellow/puYear=*/puMonth=*/*.parquet',
DATA_SOURCE = 'NYCTaxiExternalDataSource',
FORMAT = 'parquet'
) AS filerows
Je také vhodné přidat sloupce s daty o umístění souboru do zobrazení pomocí filepath() funkce pro snadnější a výkonnější filtrování. Použití zobrazení může snížit počet souborů a množství dat, která musí dotaz na zobrazení číst a zpracovávat při filtrování podle některého z těchto sloupců.
CREATE VIEW TaxiRides AS
SELECT *
, filerows.filepath(1) AS [year]
, filerows.filepath(2) AS [month]
FROM OPENROWSET(
BULK 'yellow/puYear=*/puMonth=*/*.parquet',
DATA_SOURCE = 'NYCTaxiExternalDataSource',
FORMAT = 'parquet'
) AS filerows
Zobrazení také umožňují vytváření sestav a analytické nástroje, jako je Power BI, využívat výsledky OPENROWSET.
Externí tabulky
Externí tabulky zapouzdřují přístup k souborům, takže jejich dotazování je téměř stejné jako dotazování místních relačních dat uložených v uživatelských tabulkách. Pokud chcete vytvořit externí tabulku, musíte mít na místě externí zdroj dat a objekty formátu externího souboru:
--Create external file format
CREATE EXTERNAL FILE FORMAT DemoFileFormat
WITH (
FORMAT_TYPE=PARQUET
)
GO
--Create external table:
CREATE EXTERNAL TABLE tbl_TaxiRides(
vendorID VARCHAR(100) COLLATE Latin1_General_BIN2,
tpepPickupDateTime DATETIME2,
tpepDropoffDateTime DATETIME2,
passengerCount INT,
tripDistance FLOAT,
puLocationId VARCHAR(8000),
doLocationId VARCHAR(8000),
startLon FLOAT,
startLat FLOAT,
endLon FLOAT,
endLat FLOAT,
rateCodeId SMALLINT,
storeAndFwdFlag VARCHAR(8000),
paymentType VARCHAR(8000),
fareAmount FLOAT,
extra FLOAT,
mtaTax FLOAT,
improvementSurcharge VARCHAR(8000),
tipAmount FLOAT,
tollsAmount FLOAT,
totalAmount FLOAT
)
WITH (
LOCATION = 'yellow/puYear=*/puMonth=*/*.parquet',
DATA_SOURCE = NYCTaxiExternalDataSource,
FILE_FORMAT = DemoFileFormat
);
GO
Po vytvoření externí tabulky ji můžete dotazovat stejně jako jakoukoli jinou tabulku:
SELECT TOP 10 *
FROM tbl_TaxiRides;
Podobně jako OPENROWSETexterní tabulky podporují dotazování více souborů a složek pomocí zástupných znaků. Externí tabulky ale nepodporují odvození schématu.
Důležité informace o výkonu
Počet souborů nebo množství dat, která můžete dotazovat, není nijak omezený, ale výkon dotazů závisí na množství dat, formátu dat, způsobu uspořádání dat a složitosti dotazů a spojení.
Dotazování na dělená data
Data jsou často uspořádaná do podsložek, označovaných také jako oddíly. Spravovanou instanci SQL můžete dát pokyn, aby dotazoval pouze konkrétní složky a soubory. Tím se sníží počet souborů a množství dat, která dotaz potřebuje ke čtení a zpracování, což vede k lepšímu výkonu. Tento typ optimalizace dotazů se označuje jako vyřazení oddílů nebo odstranění oddílů. Můžete eliminovat oddíly z provádění dotazů pomocí funkce filepath() metadat v WHERE klauzuli dotazu.
Následující ukázkový dotaz čte datové soubory NYC Yellow Taxi pouze za poslední tři měsíce roku 2017:
SELECT
r.filepath() AS filepath
,r.filepath(1) AS [year]
,r.filepath(2) AS [month]
,COUNT_BIG(*) AS [rows]
FROM OPENROWSET(
BULK 'yellow/puYear=*/puMonth=*/*.parquet',
DATA_SOURCE = 'NYCTaxiExternalDataSource',
FORMAT = 'parquet'
)
WITH (
vendorID INT
) AS [r]
WHERE
r.filepath(1) IN ('2017')
AND r.filepath(2) IN ('10', '11', '12')
GROUP BY
r.filepath()
,r.filepath(1)
,r.filepath(2)
ORDER BY
filepath;
Pokud uložená data nejsou rozdělená na oddíly, zvažte jejich rozdělení, aby se zlepšil výkon dotazů.
Pokud používáte externí tabulky, funkce filepath() a filename() jsou podporovány, ale ne v klauzuli WHERE. Můžete nadále filtrovat podle filename nebo filepath, pokud je použijete ve počítaných sloupcích, jak ukazuje následující příklad:
CREATE EXTERNAL TABLE tbl_TaxiRides (
vendorID VARCHAR(100) COLLATE Latin1_General_BIN2,
tpepPickupDateTime DATETIME2,
tpepDropoffDateTime DATETIME2,
passengerCount INT,
tripDistance FLOAT,
puLocationId VARCHAR(8000),
doLocationId VARCHAR(8000),
startLon FLOAT,
startLat FLOAT,
endLon FLOAT,
endLat FLOAT,
rateCodeId SMALLINT,
storeAndFwdFlag VARCHAR(8000),
paymentType VARCHAR(8000),
fareAmount FLOAT,
extra FLOAT,
mtaTax FLOAT,
improvementSurcharge VARCHAR(8000),
tipAmount FLOAT,
tollsAmount FLOAT,
totalAmount FLOAT,
[Year] AS CAST(filepath(1) AS INT), --use filepath() for partitioning
[Month] AS CAST(filepath(2) AS INT) --use filepath() for partitioning
)
WITH (
LOCATION = 'yellow/puYear=*/puMonth=*/*.parquet',
DATA_SOURCE = NYCTaxiExternalDataSource,
FILE_FORMAT = DemoFileFormat
);
GO
SELECT *
FROM tbl_TaxiRides
WHERE
[year]=2017
AND [month] in (10,11,12);
Pokud uložená data nejsou rozdělená na oddíly, zvažte jejich rozdělení, aby se zlepšil výkon dotazů.
Statistika
Shromažďování statistik o externích datech je jednou z nejdůležitějších věcí, které můžete udělat pro optimalizaci dotazů. Čím více instance ví o vašich datech, tím rychleji dokáže provádět dotazy. Optimalizátor dotazů stroje SQL je optimalizátor založený na nákladech. Porovná náklady na různé plány dotazů a pak zvolí plán s nejnižšími náklady. Ve většině případů zvolí plán, který se spustí nejrychleji.
Automatické vytváření statistik
Spravovaná instance Azure SQL analyzuje příchozí dotazy uživatelů na chybějící statistiky. Pokud statistiky chybí, optimalizátor dotazů automaticky vytvoří statistiky o jednotlivých sloupcích v predikátu dotazu nebo podmínce spojení, aby se zlepšily odhady kardinality pro plán dotazu. Automatické vytvářenístatistikch Doba vytvoření statistiky pro jeden sloupec závisí na velikosti cílových souborů.
Ruční statistika OPENROWSET
Statistiky s jedním sloupcem pro OPENROWSET cestu je možné vytvořit pomocí sys.sp_create_openrowset_statistics uložené procedury předáním výběrového dotazu s jedním sloupcem jako parametrem:
EXEC sys.sp_create_openrowset_statistics N'
SELECT pickup_datetime
FROM OPENROWSET(
BULK ''abs://public@pandemicdatalake.blob.core.windows.net/curated/covid-19/bing_covid-19_data/latest/*.parquet'',
FORMAT = ''parquet'') AS filerows
';
Ve výchozím nastavení instance používá k vytvoření statistiky 100 % dat poskytnutých v datové sadě. Pomocí možností můžete volitelně zadat velikost vzorku jako procento TABLESAMPLE . Pokud chcete vytvořit statistiku s jedním sloupcem pro více sloupců, proveďte sys.sp_create_openrowset_statistics pro každý ze sloupců. Pro cestu nemůžete vytvořit statistiky OPENROWSET s více sloupci.
Pokud chcete aktualizovat existující statistiky, nejprve sys.sp_drop_openrowset_statistics je pomocí uložené procedury odstraňte a pak je znovu vytvořte pomocí příkazu sys.sp_create_openrowset_statistics:
EXEC sys.sp_drop_openrowset_statistics N'
SELECT pickup_datetime
FROM OPENROWSET(
BULK ''abs://public@pandemicdatalake.blob.core.windows.net/curated/covid-19/bing_covid-19_data/latest/*.parquet'',
FORMAT = ''parquet'') AS filerows
';
Ruční statistika externí tabulky
Syntaxe pro vytváření statistik u externích tabulek se podobá syntaxi používané pro běžné uživatelské tabulky. Pokud chcete vytvořit statistiku pro sloupec, zadejte název objektu statistiky a název sloupce:
CREATE STATISTICS sVendor
ON tbl_TaxiRides (vendorID)
WITH FULLSCAN, NORECOMPUTE;
Možnosti WITH jsou povinné a pro velikost vzorku jsou FULLSCAN povolené možnosti a SAMPLE n procenta.
- Pokud chcete vytvořit statistiku s jedním sloupcem pro více sloupců, proveďte
CREATE STATISTICSpro každý ze sloupců. - Statistiky s více sloupci nejsou podporované.
Odstraňování potíží
K problémům se spouštěním dotazů obvykle dochází, když spravovaná instance SQL nemá přístup k umístění souboru. Související chybové zprávy můžou hlásit nedostatečná přístupová práva, umístění, které neexistuje, soubor používaný jiným procesem nebo adresář nelze uvést. Ve většině případů tyto chyby značí, že zásady řízení síťového provozu blokují přístup k souborům nebo uživatel nemá přístupová práva. Zkontrolujte následující položky:
- Nesprávná nebo chybně zadaná cesta k umístění.
- Platnost klíče SAS. Platnost může vypršena, obsahuje překlep nebo začíná otazníkem.
- Oprávnění klíče SAS jsou povolena. Pokud se používají zástupné znaky, minimálně přečtěte a uveďte seznam.
- Zablokovaný příchozí provoz v účtu úložiště. Podrobnosti najdete v části Správa pravidel virtuální sítě pro Azure Storage a ujistěte se, že je povolený přístup z virtuální sítě spravované instance SQL.
- Zablokoval odchozí provoz ve spravované instanci SQL pomocí zásad koncového bodu úložiště. Povolte odchozí provoz pro účet úložiště.
- Přístupová práva spravované identity Ujistěte se, že spravovaná identita instance má přístupová práva k účtu úložiště.
- Aby dotazy virtualizace dat fungovaly, musí být úroveň kompatibility databáze 130 nebo vyšší.
VYTVOŘIT EXTERNÍ TABULKU POMOCÍ VÝBĚRU (CETAS)
CREATE EXTERNAL TABLE AS SELECT (CETAS) umožňuje exportovat data z vaší spravované instance SQL do externího účtu úložiště. Pomocí CETAS můžete vytvořit externí tabulku nad soubory Parquet nebo CSV ve službě Azure Blob Storage nebo Azure Data Lake Storage (ADLS) Gen2. CETAS může také paralelně exportovat výsledky příkazu T-SQL SELECT do vytvořené externí tabulky. U těchto funkcí existuje potenciál rizika exfiltrace dat, takže spravovaná instance Azure SQL ve výchozím nastavení zakáže CETAS. Pokud to chcete povolit, přečtěte si článek CREATE EXTERNAL TABLE AS SELECT (CETAS).
Omezení
- Funkce zabezpečení na úrovni řádků není u externích tabulek podporovaná.
- Pravidlo dynamického maskování dat nelze definovat pro sloupec v externí tabulce.
Známé problémy
- Pokud je v aplikaci SQL Server Management Studio (SSMS) povolená parametrizace funkce Always Encrypted , dotazy virtualizace dat selžou s chybovou
Incorrect syntax near 'PUSHDOWN'zprávou.