Dela via


SqlPackage som använder data i Parquet-filer (förhandsversion)

Den här artikeln beskriver SqlPackage-stöd för interaktion med data som lagras i Azure Blob Storage i Parquet-format.

Med extraheraskrivs databasschemat (.dacpac fil) till den lokala klienten som kör SqlPackage och data skrivs till Azure Blob Storage i Parquet-format. Data lagras i enskilda mappar namngivna med tvådelade tabellnamn. SKAPA EXTERN TABELL SOM SELECT (CETAS) används för att skriva filerna i Azure Blob Storage.

Med publicering avläses databasschemat (.dacpac fil) från den lokala klienten som kör SqlPackage och data läses från eller skrivs till Azure Blob Storage i Parquet-format.

För SQL Server 2022 och Azure SQL Managed Instance finns förhandsversionsstöd för att extrahera och att publicera med data i Parquet-filer i Azure Blob Storage tillgängligt i och med SqlPackage version 162.1.176 och senare. För Azure SQL Database finns förhandsversionsstöd för publicering tillgängligt i SqlPackage 170.1.61 och senare. SQL Server 2019 och tidigare stöds inte. Åtgärderna importera och exportera fortsätter att vara tillgängliga för SQL Server, Azure SQL Managed Instance och Azure SQL Database. Stöd för Parquet-filer i Azure Blob Storage är fortfarande allmänt tillgängligt för Azure Synapse Analytics.

I SQL-databaser som finns i Azure ger extraherings-/publiceringsåtgärderna med Parquet-filer bättre prestanda jämfört med import-/exportåtgärder med .bacpac filer i många scenarier.

Extrahera (exportera data)

För att exportera data från en databas till Azure Blob Storage används åtgärden SqlPackage extrahera med följande egenskaper:

  • /p:AzureStorageBlobEndpoint
  • /p:AzureStorageContainer
  • /p:AzureSharedAccessSignatureToken eller /p:AzureStorageKey (stöds inte för användning med SQL Server)

Skärmbild av Sammanfattning av dataextrahering från en databas med en .dacpac-fil som skrivits till en SqlPackage-miljö och tabelldata som skrivits till Azure Blob Storage i parquet-filer.

Åtkomst för databasen för åtkomst till bloblagringscontainern auktoriseras via en lagringskontonyckel. Databasschemat (.dacpac-filen) skrivs till den lokala klienten som kör SqlPackage och data skrivs till Azure Blob Storage i Parquet-format.

Parametern /p:AzureStorageRootPath är valfri och anger lagringsrotsökvägen i containern. Utan den här egenskapen är sökvägen som standard servername/databasename/timestamp/. Data lagras i enskilda mappar namngivna med tvådelade tabellnamn. Antalet filer som skapas per tabell beror på MAXDOP och tillgängliga SQL-kärnor vid tidpunkten för exporten.

Slutligen anger egenskapen /p:TableData vilka tabeller som har sina data exporterade. Ange tabellnamnet med eller utan hakparenteser som omger namndelarna i formatet schema_name.table_identifier. Den här egenskapen kan anges flera gånger för att ange flera tabeller.

Example

I följande exempel extraheras en databas med namnet databasename från en server med namnet yourserver till en lokal fil med namnet databaseschema.dacpac i den aktuella katalogen. Data skrivs till en container med namnet containername i ett lagringskonto med namnet storageaccount med hjälp av en lagringskontonyckel med namnet storageaccountkey. Data skrivs till standardvägen servername/databasename/timestamp/ i containern.

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

Se SqlPackage-extrahering för fler exempel på tillgängliga autentiseringstyper.

Publicera (importera data)

Om du vill importera data från Parquet-filer i Azure Blob Storage till en databas används åtgärden SqlPackage publicera med följande egenskaper:

  • /p:AzureStorageBlobEndpoint
  • /p:AzureStorageContainer
  • /p:AzureStorageRootPath
  • /p:AzureSharedAccessSignatureToken eller /p:AzureStorageKey (stöds inte för användning med SQL Server)

Åtkomst för publicering kan auktoriseras via en lagringskontonyckel eller en SAS-token (signatur för delad åtkomst). Databasschemat (.dacpac-filen) läss från den lokala klienten som kör SqlPackage och data läss från Azure Blob Storage i Parquet-format.

Example

I följande exempel publiceras en databas med namnet databasename till en server med namnet yourserver från en lokal fil med namnet databaseschema.dacpac i den aktuella katalogen. Data läss från en container med namnet containername i ett lagringskonto med namnet storageaccount med hjälp av en lagringskontonyckel med namnet storageaccountkey. Datan läses från enskilda mappar per tabell under sökvägen yourserver/databasename/10-19-2023_11-09-56/ i containern.

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/"

Se SqlPackage publicera för fler exempel på tillgängliga autentiseringstyper.

Limitations

PolyBase

För SQL Server och Azure SQL Managed Instance krävs PolyBase för SqlPackage-åtgärder med Parquet-filer. Följande fråga kan användas för att kontrollera om PolyBase är aktiverat:

// 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)

Du kan behöva aktivera PolyBase - eller PolyBase-export. För att aktivera PolyBase på Azure SQL Managed Instance krävs PowerShell eller Azure CLI. Du bör utvärdera om det är rätt att aktivera PolyBase för din miljö innan du gör konfigurationsändringar.

Tabell- och datatyper

De flesta datatyper stöds för extraherings- och publiceringsoperationer med Parquet-filer. Tabeller med datatyper som inte stöds resulterar i att tabelldata för tabellen exporteras till .dacpac filen i stället för i Parquet-format. Följande datatyper stöds och skrivs till Parquet-filer i Azure Blob Storage:

  • 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

Registertabeller är aktiverade för att extrahera och publicera operationer med Parquet-filer.

Data som lagras med Always Encrypted stöds inte för operationer för att extrahera och publicera med Parquet-filer.

Du kan undersöka databasen med T-SQL för att identifiera datatyper som skulle skrivas till .dacpac filen i stället för i Parquet-filer som skrivits direkt till Azure Blob Storage. Följande exempelfråga returnerar en resultatuppsättning av typer och tabeller med typer som inte stöds för att skriva till Parquet-filer.

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'
);