Compartir a través de


SqlPackage con datos en archivos Parquet (versión preliminar)

En este artículo se describe la compatibilidad con SqlPackage para interactuar con los datos almacenados en Azure Blob Storage que están en formato Parquet. Para SQL Server 2022 y Azure SQL Managed Instance, la compatibilidad con la versión preliminar de extraer y publicar con datos en archivos Parquet en Azure Blob Storage está disponible en SqlPackage 162.1.176 y versiones posteriores. No se admiten Azure SQL Database y SQL Server 2019 ni versiones anteriores. Las acciones de importación y exportación siguen estando disponibles para SQL Server, Azure SQL Managed Instance y Azure SQL Database. La compatibilidad con archivos Parquet en Azure Blob Storage sigue estando disponible con carácter general para Azure Synapse Analytics.

Al extraer con, el esquema de la base de datos (archivo.dacpac) se escribe en el cliente local que ejecuta SqlPackage y los datos se almacenan en Azure Blob Storage en formato Parquet. Los datos se almacenan en carpetas individuales llamadas con nombres de tablas formados por dos partes. CETAS se usa para escribir los archivos en Azure Blob Storage.

Con publicar, se lee el esquema de la base de datos (archivo .dacpac) del cliente local que ejecuta SqlPackage, y los datos se leen o escriben en Azure Blob Storage en formato Parquet.

En las bases de datos SQL hospedadas en Azure, las operaciones de extracción y publicación con archivos Parquet ofrecen un rendimiento mejorado sobre las operaciones de importación y exportación con archivos .bacpac en muchos escenarios.

Extracción (exportación de datos)

Para exportar datos de una base de datos a Azure Blob Storage, se utiliza la acción de extracción de SqlPackage con las siguientes propiedades.

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

El acceso a la base de datos para acceder al contenedor de Blob Storage está autorizado a través de una clave de cuenta de almacenamiento. El esquema de base de datos (archivo .dacpac) se escribe en el cliente local que ejecuta SqlPackage y los datos se escriben en Azure Blob Storage en formato Parquet.

El parámetro /p:AzureStorageRootPath es opcional, que establece la ruta de acceso raíz de almacenamiento dentro del contenedor. Sin esta propiedad, la ruta de acceso tiene como valor predeterminado servername/databasename/timestamp/. Los datos se almacenan en carpetas individuales que llevan nombres de tablas compuestos de dos partes. El número de archivos creados por tabla depende de MAXDOP y de los núcleos SQL disponibles en el momento de la exportación.

Por último, la propiedad /p:TableData especifica qué tablas tienen sus datos exportados. Especifique el nombre de la tabla con o sin los corchetes que rodean las partes de nombre con el formato schema_name.table_identifier. Esta propiedad se puede especificar varias veces para indicar varias tablas.

Ejemplo

En el ejemplo siguiente se extrae una base de datos denominada databasename de un servidor denominado yourserver a un archivo local denominado databaseschema.dacpac en el directorio actual. Los datos se escriben en un contenedor denominado containername en una cuenta de almacenamiento denominada storageaccount mediante una clave de cuenta de almacenamiento denominada storageaccountkey. Los datos se escriben en la ruta de acceso predeterminada de servername/databasename/timestamp/ en el contenedor.

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

Consulte el extracto de SqlPackage para obtener más ejemplos de los tipos de autenticación disponibles.

Publicar (importar datos)

Los datos de los archivos Parquet almacenados en Azure Blob Storage se importan a una base de datos mediante la acción SqlPackage publish con las siguientes propiedades:

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

El acceso para publicar se puede autorizar a través de una clave de cuenta de almacenamiento o un token de firma de acceso compartido (SAS). El esquema de base de datos (archivo .dacpac) se lee del cliente local que ejecuta SqlPackage y los datos se leen desde Azure Blob Storage en formato Parquet.

Ejemplo

En el ejemplo siguiente se publica una base de datos denominada databasename en un servidor denominado yourserver desde un archivo local denominado databaseschema.dacpac en el directorio actual. Los datos se leen desde un contenedor denominado containername en una cuenta de almacenamiento denominada storageaccount mediante una clave de cuenta de almacenamiento denominada storageaccountkey. Los datos se leen desde carpetas individuales por tabla en la ruta de acceso yourserver/databasename/10-19-2023_11-09-56/ del contenedor.

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

Consulte Publicación de SqlPackage para obtener más ejemplos de tipos de autenticación disponibles.

Limitaciones

Polybase

Polybase es necesario para las operaciones de SqlPackage con archivos Parquet. La consulta siguiente se puede usar para comprobar si Polybase está habilitado:

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

Es posible que tenga que habilitar Polybase o Exportación de Polybase. La habilitación de Polybase en Azure SQL Managed Instance requiere PowerShell o la CLI de Azure. Se recomienda evaluar si habilitar Polybase es adecuado para su entorno antes de realizar cambios de configuración.

Tipos de datos y tablas

Los tipos de datos admitidos por CETAS son compatibles con las operaciones de extracción y publicación con archivos Parquet.

Las tablas de contabilidad están habilitadas para las operaciones de extracción y publicación con archivos Parquet.

Los datos almacenados con el sistema Always Encrypted no son compatibles con las operaciones de extracción y publicación que utilizan archivos Parquet.

La comprobación de la base de datos de tipos no admitidos se realiza antes de extraerla a Parquet by SqlPackage, pero puede examinar la base de datos rápidamente con T-SQL. La consulta de ejemplo siguiente devuelve un conjunto de resultados de tipos y tablas con tipos no admitidos para escribir en archivos 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'
)

Pasos siguientes