Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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.
Con la extracción, el esquema de base de datos (.dacpac archivo) se escribe en el cliente local que ejecuta SqlPackage y los datos se escriben en Azure Blob Storage en formato Parquet. Los datos se almacenan en carpetas individuales llamadas con nombres de tablas formados por dos partes.
CREATE EXTERNAL TABLE AS SELECT (CETAS) se usa para escribir los archivos en Azure Blob Storage.
Con la publicación, el esquema de base de datos (.dacpac archivo) se lee desde el cliente local que ejecuta SqlPackage y los datos se leen o escriben en Azure Blob Storage 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. Para Azure SQL Database, la compatibilidad con la versión preliminar para publicar está disponible en SqlPackage 170.1.61 y versiones posteriores. SQL Server 2019 y versiones anteriores no se admiten. 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.
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, la acción de extracción SqlPackage se usa con las siguientes propiedades:
/p:AzureStorageBlobEndpoint/p:AzureStorageContainer-
/p:AzureSharedAccessSignatureTokeno/p:AzureStorageKey(no se admite para su uso con SQL Server)
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.
Example
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)
Para importar datos de archivos Parquet en Azure Blob Storage a una base de datos, se usa la acción publish de SqlPackage con las siguientes propiedades.
/p:AzureStorageBlobEndpoint/p:AzureStorageContainer/p:AzureStorageRootPath-
/p:AzureSharedAccessSignatureTokeno/p:AzureStorageKey(no se admite para su uso con SQL Server)
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.
Example
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.
Limitations
PolyBase
Para SQL Server y Azure SQL Managed Instance, 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 la exportación de PolyBase o PolyBase. La habilitación de PolyBase en Azure SQL Managed Instance requiere PowerShell o la CLI de Azure. Debe evaluar si habilitar PolyBase es adecuado para su entorno antes de realizar cambios de configuración.
Tipos de datos y tablas
La mayoría de los tipos de datos son compatibles con las operaciones de extracción y publicación con archivos Parquet. Las tablas con tipos de datos no admitidos provocan que los datos de dichas tablas se exporten al archivo .dacpac en lugar de en formato Parquet. Se admiten los siguientes tipos de datos y se escriben en archivos Parquet en 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
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.
Puede examinar la base de datos con T-SQL para detectar tipos de datos que se escribirían en el .dacpac archivo en lugar de en archivos Parquet escritos directamente en Azure Blob Storage. La siguiente consulta de ejemplo devuelve un conjunto de resultados de tipos y tablas cuyos tipos no son compatibles 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',
'tinyint',
'smallint',
'int',
'bigint',
'bit',
'money',
'smallmoney',
'uniqueidentifier',
'timestamp',
'rowversion',
'text',
'ntext',
'image',
'xml',
'json',
'vector'
);