Megosztás a következőn keresztül:


SqlPackage Parquet-fájlokban lévő adatokkal (előzetes verzió)

Ez a cikk az SqlPackage által nyújtott támogatást mutatja be az Azure Blob Storage-ban tárolt, parquet formátumú adatok kezelésével kapcsolatban.

A kinyerése után az adatbázisséma (.dacpac fájl) az SqlPackage-t futtató helyi ügyfélnek lesz megírva, és az adatok parquet formátumban lesznek megírva az Azure Blob Storage-ba. Az adatokat a rendszer kétrészes táblanevekkel elnevezett mappákban tárolja. A CREATE EXTERNAL TABLE AS SELECT (CETAS) arra szolgál, hogy a fájlokat az Azure Blob Storage-ba írja.

A közzétételkor az adatbázissémát (.dacpac fájl) az SqlPackage-t futtató helyi ügyfél beolvassa, és az adatok Parquet formátumban olvashatók be vagy írhatók az Azure Blob Storage-ba.

Az SQL Server 2022 és a felügyelt Azure SQL-példány esetében az Azure Blob Storage Parquet-fájljaiban lévő adatok kinyerése és közzététele előzetes verziójú támogatása az SqlPackage 162.1.176-os és újabb verzióiban érhető el. Az Azure SQL Database esetében a közzététel előzetes verziója az SqlPackage 170.1.61-ben és újabb verzióiban érhető el. Az SQL Server 2019 és korábbi verziói nem támogatottak. Az importálási és exportálási műveletek továbbra is elérhetők az SQL Serverhez, az Azure SQL Managed Instancehez és az Azure SQL Database-hez. Az Azure Blob Storage parquet-fájljainak támogatása továbbra is általánosan elérhető az Azure Synapse Analyticshez.

Az Azure-ban üzemeltetett SQL-adatbázisokban a Parquet-fájlokkal végzett kinyerési/közzétételi műveletek számos esetben jobb teljesítményt nyújtanak az importálási/exportálási műveleteknél .bacpac fájlokkal szemben.

Kinyerés (adatok exportálása)

Ha adatokat szeretne exportálni egy adatbázisból az Azure Blob Storage-ba, az SqlPackage kinyerési művelet a következő tulajdonságokkal használható:

  • /p:AzureStorageBlobEndpoint
  • /p:AzureStorageContainer
  • /p:AzureSharedAccessSignatureToken vagy /p:AzureStorageKey (az SQL Server használata nem támogatott)

Képernyőkép egy adatbázisból származó adatkivonat összegzéséről egy SqlPackage-környezetbe írt .dacpac-fájllal és az Azure Blob Storage-ba parquet-fájlokban írt táblaadatokkal.

Az adatbázis hozzáférése a blobtároló eléréséhez egy tárfiókkulcson keresztül engedélyezett. Az adatbázisséma (.dacpac fájl) az SqlPackage-t futtató helyi ügyfélnek van megírva, és az adatok parquet formátumban kerülnek az Azure Blob Storage-ba.

A /p:AzureStorageRootPath paraméter megadása nem kötelező, amely beállítja a tároló gyökérútvonalát. Ez a tulajdonság nélkül az elérési út alapértelmezés szerint servername/databasename/timestamp/. Az adatok tárolása kétrészes táblanevekkel elnevezett mappákban történik. A táblánként létrehozott fájlok száma a MAXDOP-tól és az exportáláskor rendelkezésre álló SQL-magoktól függ.

Végül a /p:TableData tulajdonság határozza meg, hogy mely táblák exportálják az adataikat. Adja meg a tábla nevét a schema_name.table_identifier formátumban a névrészeket körülvevő zárójelekkel vagy anélkül. Ez a tulajdonság többször is megadható több tábla jelzéséhez.

Example

Az alábbi példa egy databasename nevű adatbázist nyer ki egy yourserver nevű kiszolgálóról egy databaseschema.dacpac nevű helyi fájlba az aktuális könyvtárban. Az adatok egy containername nevű tárolóba lesznek írva egy storageaccount nevű tárfiókban, egy storageaccountkeynevű tárfiókkulcs használatával. Az adatok a tárolóban lévő servername/databasename/timestamp/ alapértelmezett elérési útjára lesznek írva.

SqlPackage /Action:Extract /SourceServerName:yourserver /SourceDatabaseName:databasename /TargetFile:databaseschema.dacpac /p:AzureStorageBlobEndpoint=https://storageaccount.blob.core.windows.net /p:AzureStorageContainer=containername /p:AzureStorageKey=storageaccountkey

Az elérhető hitelesítési típusokra további példákat az SqlPackage-kivonatban talál.

Közzététel (adatok importálása)

Ha az Azure Blob Storage Parquet-fájljaiból szeretne adatokat importálni egy adatbázisba, az SqlPackage közzétételi művelete a következő tulajdonságokkal rendelkezik:

  • /p:AzureStorageBlobEndpoint
  • /p:AzureStorageContainer
  • /p:AzureStorageRootPath
  • /p:AzureSharedAccessSignatureToken vagy /p:AzureStorageKey (az SQL Server használata nem támogatott)

A közzétételhez való hozzáférés egy tárfiókkulcson vagy egy közös hozzáférésű jogosultságkódon (SAS) keresztül engedélyezhető. Az adatbázissémát (.dacpac fájl) a helyi ügyfélből olvassák be, amely az SqlPackage-t futtatja, és az adatokat Parquet formátumban olvassák be az Azure Blob Storage-ból.

Example

Az alábbi példa egy databasename nevű adatbázist tesz közzé egy yourserver nevű kiszolgálón az aktuális könyvtárban databaseschema.dacpac nevű helyi fájlból. Az adatok egy containername nevű tárolóból vannak beolvasva egy storageaccount nevű tárfiókban használva egy storageaccountkeynevű kulcsot. Az adatok a tárolóban található yourserver/databasename/10-19-2023_11-09-56/ elérési út alatt, táblázatonként egyes mappákból olvashatók be.

SqlPackage /Action:Publish /SourceFile:databaseschema.dacpac /TargetServerName:yourserver /TargetDatabaseName:databasename /p:AzureStorageBlobEndpoint=https://storageaccount.blob.core.windows.net /p:AzureStorageContainer=containername  /p:AzureStorageKey=storageaccountkey /p:AzureStorageRootPath="yourserver/databasename/10-19-2023_11-09-56/"

Az elérhető hitelesítési típusokra további példákat az SqlPackage közzétételével kapcsolatban talál.

Limitations

PolyBase

Az SQL Server és az Azure SQL Managed Instance esetében a PolyBase szükséges a Parquet-fájlokat tartalmazó SqlPackage-műveletekhez. Az alábbi lekérdezés segítségével ellenőrizheti, hogy a PolyBase engedélyezve van-e:

// configuration_id = 16397 is 'allow polybase export'
// configuration_id = 16399 is 'polybase enabled'
SELECT configuration_id, value_in_use FROM sys.configurations
WHERE configuration_id IN (16397, 16399)

Előfordulhat, hogy engedélyeznie kell a PolyBase vagy a PolyBase exportálását. A PolyBase felügyelt Azure SQL-példányon való engedélyezéséhez PowerShell vagy Azure CLI szükséges. A konfiguráció módosítása előtt ki kell értékelnie, hogy a PolyBase engedélyezése megfelelő-e a környezet számára.

Táblázat- és adattípusok

A legtöbb adattípus támogatott a Parquet-fájlokkal végzett kinyerési és közzétételi műveletekhez. A nem támogatott adattípusokkal rendelkező táblák esetében a tábla adatai a Parquet formátum helyett a .dacpac fájlba lesznek exportálva. A következő adattípusok támogatottak, és parquet-fájlokba vannak írva az Azure Blob Storage-ban:

  • char
  • varchar
  • nchar
  • nvarchar
  • text
  • ntext
  • decimal
  • numeric
  • float
  • real
  • bit
  • tinyint
  • smallint
  • int
  • bigint
  • smallmoney
  • money
  • smalldate
  • smalldatetime
  • date
  • datetime
  • datetime2
  • datetimeoffset
  • time
  • uniqueidentifier
  • timestamp
  • rowversion
  • binary
  • varbinary
  • image
  • xml
  • json
  • vector

A ledgertáblákat Parquet-fájlokkal végzett kinyerési és közzétételi műveletekhez lehet használni.

Az Always Encrypted használatával tárolt adatok parquet-fájlokkal végzett kinyerési és közzétételi műveletekhez nem támogatottak.

Az adatbázis t-SQL-sel való vizsgálatával észlelheti azokat az adattípusokat, amelyeket a közvetlenül az Azure Blob Storage-ba írt Parquet-fájlok helyett a .dacpac fájlba írnának. Az alábbi minta lekérdezés olyan típusokat és táblákat ad vissza, amelyek nem támogatottak a Parquet-fájlokba való íráshoz.

SELECT DISTINCT C.DATA_TYPE, C.TABLE_SCHEMA, C.TABLE_NAME 
FROM INFORMATION_SCHEMA.TABLES T
INNER JOIN INFORMATION_SCHEMA.COLUMNS C
    ON T.TABLE_SCHEMA = C.TABLE_SCHEMA 
    AND T.TABLE_NAME = C.TABLE_NAME
    AND T.TABLE_TYPE = 'BASE TABLE'
WHERE C.DATA_TYPE NOT IN (
    'binary',
    'varbinary',
    'char',
    'varchar',
    'nchar',
    'nvarchar',
    'smalldate',
    'smalldatetime',
    'date',
    'datetime',
    'datetime2',
    'datetimeoffset',
    'time',
    'decimal',
    'numeric',
    'float',
    'real',
    'tinyint',
    'smallint',
    'int',
    'bigint',
    'bit',
    'money',
    'smallmoney',
    'uniqueidentifier',
    'timestamp',
    'rowversion',
    'text',
    'ntext',
    'image',
    'xml',
    'json',
    'vector'
);