Condividi tramite


SqlPackage con dati nei file Parquet (anteprima)

Questo articolo copre il supporto di SqlPackage per interagire con i dati archiviati in Archiviazione Blob di Azure in formato Parquet. Per SQL Server 2022 e Istanza gestita di SQL di Azure, il supporto in anteprima per estrarre e pubblicare con i dati nei file Parquet in Archiviazione BLOB di Azure è disponibile in SqlPackage 162.1.176 e versioni successive. Il database SQL di Azure e SQL Server 2019 e versioni precedenti non sono supportati. Le azioni di importazione e di esportazione continuano a essere disponibili per SQL Server, Azure SQL Managed Instance e Azure SQL Database. Il supporto per i file Parquet in Azure Blob Storage è ancora generalmente disponibile per Azure Synapse Analytics.

Con estrarre, lo schema del database (file.dacpac) viene scritto sul client locale che esegue SqlPackage e i dati vengono scritti su Azure Blob Storage in formato Parquet. I dati vengono archiviati in singole cartelle denominate con nomi di tabelle composti da due parti. CETAS viene utilizzato per scrivere i file nell'archiviazione Blob di Azure.

Con pubblica, lo schema del database (.dacpac file) viene letto dal client locale che esegue SqlPackage e i dati vengono letti o scritti su Archiviazione BLOB di Azure in formato Parquet.

Nei database SQL ospitati in Azure le operazioni di estrazione/pubblicazione con file Parquet offrono prestazioni migliori rispetto alle operazioni di importazione/esportazione con file .bacpac in molti scenari.

Estrarre (esportazione dei dati)

Per esportare dati da un database nell'Archiviazione di BLOB di Azure, viene utilizzata l'azione di estrazione di SqlPackage con le seguenti proprietà:

  • /p:AzureStorageBlobEndpoint
  • /p:AzureStorageContainer
  • /p:AzureStorageKey o /p:AzureSharedAccessSignatureToken

L'accesso al database per accedere al contenitore di archiviazione BLOB è autorizzato tramite una chiave dell'account di archiviazione. Lo schema del database (file .dacpac) viene scritto nel client locale che esegue SqlPackage e i dati vengono scritti in Azure Blob Storage nel formato Parquet.

Il parametro /p:AzureStorageRootPath è facoltativo, che imposta il percorso radice di archiviazione all'interno del contenitore. Senza questa proprietà, per impostazione predefinita il percorso viene servername/databasename/timestamp/. I dati vengono archiviati nelle singole cartelle denominate con nomi di tabella in due parti. Il numero di file creati per tabella dipende da MAXDOP e dai core SQL disponibili al momento dell'esportazione.

Infine, la proprietà /p:TableData specifica quali tabelle hanno i dati esportati. Specificare il nome della tabella con o senza le parentesi quadre che circondano le parti del nome nel formato schema_name.table_identifier. Questa proprietà può essere specificata più volte per indicare più tabelle.

Esempio

Nell'esempio seguente viene estratto un database denominato databasename da un server denominato yourserver a un file locale denominato databaseschema.dacpac nella directory corrente. I dati sono scritti in un contenitore denominato containername in un account di archiviazione denominato storageaccount usando una chiave dell'account di archiviazione denominata storageaccountkey. I dati sono scritti nel percorso predefinito di servername/databasename/timestamp/ nel contenitore.

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

Per altri esempi di tipi di autenticazione disponibili, vedere SqlPackage extract.

Pubblicare (importare dati)

Per importare dati da file Parquet in Azure Blob Storage in un database, l'azione SqlPackage publish viene usata con le proprietà seguenti:

  • /p:AzureStorageBlobEndpoint
  • /p:AzureStorageContainer
  • /p:AzureStorageRootPath
  • /p:AzureStorageKey (chiave di archiviazione Azure) o /p:AzureSharedAccessSignatureToken (token di accesso condiviso Azure)

L'accesso per la pubblicazione può essere autorizzato tramite una chiave dell'account di archiviazione o un token di firma di accesso condiviso . Lo schema del database (file con estensione .dacpac) viene letto dal client locale che esegue SqlPackage, e i dati vengono letti da Azure Blob Storage in formato Parquet.

Esempio

Nell'esempio seguente viene pubblicato un database denominato databasename in un server denominato yourserver da un file locale denominato databaseschema.dacpac nella directory corrente. I dati provengono da un contenitore denominato containername in un account di archiviazione denominato storageaccount usando una chiave di accesso dell'account di archiviazione denominata storageaccountkey. I dati sono letti da singole cartelle per tabella nel percorso yourserver/databasename/10-19-2023_11-09-56/ nel contenitore.

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

Per altri esempi di tipi di autenticazione disponibili, vedere SqlPackage publish.

Limitazioni

Polybase

Polybase è necessario per le operazioni SqlPackage con file Parquet. È possibile usare la query seguente per verificare se Polybase è abilitato:

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

Potrebbe essere necessario abilitare Polybase o Polybase export. Per abilitare Polybase in Istanza SQL gestita di Azure è necessario PowerShell o Azure CLI. È consigliabile valutare se l'abilitazione di Polybase è adatta all'ambiente prima di apportare modifiche alla configurazione.

Tipi di dati e tabelle

I tipi di dati supportati da CETAS sono supportati per le operazioni di estrazione e pubblicazione con file Parquet.

Le tabelle di registro sono abilitate per le operazioni di estrazione e pubblicazione con file Parquet.

I dati archiviati con Always Encrypted non sono supportati per le operazioni di estrazione e pubblicazione con file Parquet.

Il controllo del database per i tipi non supportati viene eseguito prima di estrarre in Parquet by SqlPackage, ma è possibile esaminare rapidamente il database con T-SQL. La query di esempio seguente restituisce un set di risultati di tipi e tabelle con tipi non supportati per la scrittura in file Parquet.

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',
    'bigint',
    'tinyint',
    'smallint',
    'int',
    'bigint',
    'bit',
    'money',
    'smallmoney',
    'uniqueidentifier'
)

Passaggi successivi