Partage via


SqlPackage avec des données dans des fichiers au format Parquet (préversion)

Cet article traite de la prise en charge par SqlPackage de l'interaction avec les données stockées dans le Stockage Blob Azure au format Parquet. Pour SQL Server 2022 et Azure SQL Managed Instance, le support en préversion pour extraire et publier avec des données dans des fichiers Parquet dans le Stockage Blob Azure est disponible dans SqlPackage 162.1.176 et versions ultérieures. Azure SQL Database et SQL Server 2019 et versions antérieures ne sont pas pris en charge. Les actions d’importation et d’exportation continuent d’être disponibles pour SQL Server, Azure SQL Managed Instance et Azure SQL Database. La prise en charge des fichiers Parquet dans le Stockage Blob Azure continue d’être généralement disponible pour Azure Synapse Analytics.

Avec l'extraction , le schéma de base de données (fichier.dacpac) est écrit sur le client local exécutant SqlPackage et les données sont écrites dans Azure Blob Storage au format Parquet. Les données sont stockées dans des dossiers individuels nommés avec des noms de table en deux parties. CETAS est utilisé pour écrire les fichiers dans le stockage Blob Azure.

Avec publier, le schéma de la base de données (fichier .dacpac) est lu à partir du client local exécutant SqlPackage et les données sont lues ou écrites dans le Stockage Blob Azure au format Parquet.

Dans les bases de données SQL hébergées dans Azure, les opérations d’extraction/publication avec des fichiers Parquet offrent des performances améliorées par rapport aux opérations d’importation/exportation avec des fichiers .bacpac dans de nombreux scénarios.

Extraire (exporter des données)

Pour exporter des données d'une base de données vers le Azure Blob Storage, l'action d'extraction de SqlPackage est utilisée avec les propriétés suivantes :

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

L’accès de la base de données au conteneur de stockage d’objets blob est autorisé par le biais d’une clé de compte de stockage. Le schéma de base de données (fichier.dacpac) est écrit dans le client local exécutant SqlPackage et les données sont écrites dans stockage Blob Azure au format Parquet.

Le paramètre /p:AzureStorageRootPath est facultatif, qui définit le chemin racine de stockage dans le conteneur. Sans cette propriété, le chemin d’accès par défaut est servername/databasename/timestamp/. Les données sont stockées dans des dossiers individuels nommés avec des noms de table en deux parties. Le nombre de fichiers créés par table dépend des cœurs MAXDOP et SQL disponibles au moment de l’exportation.

Enfin, la propriété /p:TableData spécifie quelles tables ont leurs données exportées. Spécifiez le nom de la table avec ou sans crochets entourant les parties de nom au format schema_name.table_identifier. Cette propriété peut être spécifiée plusieurs fois pour indiquer plusieurs tables.

Exemple

L’exemple suivant extrait une base de données nommée databasename à partir d’un serveur nommé yourserver dans un fichier local nommé databaseschema.dacpac dans le répertoire actif. Les données sont écrites dans un conteneur nommé containername dans un compte de stockage nommé storageaccount à l’aide d’une clé de compte de stockage nommée storageaccountkey. Les données sont écrites dans le chemin d’accès par défaut de servername/databasename/timestamp/ dans le conteneur.

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

Pour plus d’exemples de types d’authentification disponibles, consultez l’extract SqlPackage.

Publier (importer des données)

Pour importer des données à partir de fichiers Parquet dans le stockage Blob Azure vers une base de données, l'action SqlPackage publish est utilisée avec les propriétés suivantes :

  • /p:AzureStorageBlobEndpoint
  • /p :AzureStorageContainer
  • /p :AzureStorageRootPath
  • /p :AzureStorageKey ou /p :AzureSharedAccessSignatureToken

L’accès à la publication peut être autorisé via une clé de compte de stockage ou un jeton de signature d’accès partagé (SAP). Le schéma de base de données (fichier.dacpac) est lu à partir du client local exécutant SqlPackage et les données sont lues à partir du stockage Blob Azure au format Parquet.

Exemple

L’exemple suivant publie une base de données nommée databasename sur un serveur nommé yourserver à partir d’un fichier local nommé databaseschema.dacpac dans le répertoire actif. Les données sont lues à partir d’un conteneur nommé containername dans un compte de stockage nommé storageaccount à l’aide d’une clé de compte de stockage nommée storageaccountkey. Les données sont lues à partir de dossiers individuels par table sous le chemin yourserver/databasename/10-19-2023_11-09-56/ dans le conteneur.

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

Pour consulter d’autres exemples illustrant les types d’authentification disponibles, consultez Publier SqlPackage.

Limitations

Polybase

Polybase est requis pour des opérations SqlPackage concernant les fichiers Parquet. La requête suivante peut être utilisée pour vérifier si Polybase est activé :

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

Vous devrez peut-être activer Polybase ou l’exportation Polybase. L’activation de Polybase sur Azure SQL Managed Instance nécessite PowerShell ou Azure CLI. Il est recommandé d’évaluer si l’activation de Polybase convient à votre environnement avant d’apporter des modifications de configuration.

Types de tables et de données

Les types de données pris en charge par CETAS sont pris en charge pour les opérations d’extraction et de publication avec des fichiers Parquet.

Les tables de registre sont activées pour les opérations d’extraction et de publication avec des fichiers Parquet.

Les données stockées avec Always Encrypted ne sont pas prises en charge pour les opérations d’extraction et de publication avec des fichiers Parquet.

La vérification de la base de données pour les types non pris en charge est effectuée avant l'extraction vers le format Parquet par SqlPackage, mais vous pouvez rapidement examiner votre base de données avec T-SQL. L’exemple de requête suivant retourne un jeu de résultats de types et de tables avec des types non pris en charge pour l’écriture dans des fichiers 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'
)

Étapes suivantes