Compartilhar via


SqlPackage com os dados em arquivos Parquet (versão prévia)

Este artigo aborda o suporte do SqlPackage para interagir com dados armazenados no Azure Blob Storage no formato Parquet. Para o SQL Server 2022 e a Instância Gerenciada de SQL do Azure, o suporte de pré-visualização para extrair e publicar com os dados em arquivos Parquet no Armazenamento de Blobs do Azure está disponível no SqlPackage 162.1.176 e superiores. O Banco de Dados SQL do Azure e o SQL Server 2019 e anteriores não têm suporte. As ações de importação e exportação continuam disponíveis para o SQL Server, a Instância Gerenciada de SQL do Azure e o Banco de Dados SQL do Azure. O suporte para arquivos Parquet no Armazenamento de Blobs do Azure continua em disponibilidade geral para o Azure Synapse Analytics.

Com extract, o esquema de banco de dados (arquivo .dacpac) é gravado no cliente local que executa o SqlPackage, e os dados são gravados no Armazenamento de Blobs do Azure no formato Parquet. Os dados são armazenados em pastas individuais nomeadas com nomes de tabela de duas partes. CETAS é usado para gravar os arquivos no Armazenamento de Blobs do Azure.

Com publish, o esquema de banco de dados (arquivo .dacpac) é lido do cliente local que executa o SqlPackage, e os dados são lidos ou gravados no Armazenamento de Blobs do Azure no formato Parquet.

Nos bancos de dados SQL hospedados no Azure, as operações de extração/publicação com arquivos Parquet oferecem melhor desempenho em operações de importação/exportação com arquivos .bacpac em muitos cenários.

Extrair (exportar dados)

Para exportar dados de um banco de dados para o Armazenamento de Blobs do Azure, a ação de extração do SqlPackage é usada com as seguintes propriedades:

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

O acesso ao banco de dados para acessar o contêiner de armazenamento de blobs é autorizado por meio de uma chave de conta de armazenamento. O esquema de banco de dados (arquivo.dacpac) é gravado no cliente local que executa o SqlPackage e os dados são gravados no Armazenamento de Blobs do Azure no formato Parquet.

O parâmetro /p:AzureStorageRootPath é opcional, o que define o caminho raiz de armazenamento dentro do contêiner. Sem essa propriedade, o caminho usa como padrão servername/databasename/timestamp/. Os dados são armazenados em pastas individuais nomeadas com nomes de tabela de duas partes. O número de arquivos criados por tabela depende do MAXDOP e dos núcleos SQL disponíveis no momento da exportação.

Por fim, a propriedade /p:TableData especifica quais tabelas têm seus dados exportados. Especifique o nome da tabela com ou sem os colchetes ao redor das partes de nome no formato schema_name.table_identifier. Essa propriedade pode ser especificada várias vezes para indicar várias tabelas.

Exemplo

O exemplo a seguir extrai um banco de dados chamado databasename de um servidor chamado yourserver para um arquivo local chamado databaseschema.dacpac no diretório atual. Os dados são gravados em um contêiner chamado containername em uma conta de armazenamento chamada storageaccount usando uma chave de conta de armazenamento chamada storageaccountkey. Os dados são gravados no caminho padrão de servername/databasename/timestamp/ no contêiner.

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

Confira Ação extract do SqlPackage para obter mais exemplos de tipos de autenticação disponíveis.

Publicar (importar dados)

Para importar dados de arquivos Parquet no Armazenamento de Blobs do Azure para um banco de dados, a ação publish do SqlPackage é usada com as seguintes propriedades:

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

O acesso à publicação pode ser autorizado por meio de uma chave de conta de armazenamento ou um token SAS (assinatura de acesso compartilhado). O esquema de banco de dados (arquivo.dacpac) é lido do cliente local que executa o SqlPackage e os dados são lidos do Armazenamento de Blobs do Azure no formato Parquet.

Exemplo

O exemplo a seguir publica um banco de dados chamado databasename em um servidor chamado yourserver de um arquivo local chamado databaseschema.dacpac no diretório atual. Os dados são lidos de um contêiner chamado containername em uma conta de armazenamento chamada storageaccount usando uma chave de conta de armazenamento chamada storageaccountkey. Os dados são lidos de pastas individuais por tabela no caminho yourserver/databasename/10-19-2023_11-09-56/ no contêiner.

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

Confira publish do SqlPackage para obter mais exemplos de tipos de autenticação disponíveis.

Limitações

Polybase

O Polybase é necessário para operações do SqlPackage com arquivos Parquet. A consulta a seguir pode ser usada para verificar se o 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)

Talvez seja necessário habilitar o Polybase ou a exportação do Polybase. Habilitar o Polybase na Instância Gerenciada de SQL do Azure requer PowerShell ou CLI do Azure. É recomendável que você avalie se habilitar o Polybase é ideal para seu ambiente antes de fazer alterações de configuração.

Tipos de tabela e dados

Tipos de dados compatíveis com CETAS têm suporte para operações de extração e publicação com arquivos Parquet.

Tabelas de razão são habilitadas para operações de extração e publicação com arquivos Parquet.

Dados armazenados com o Always Encrypted não são suportados para operações de extração e publicação com arquivos Parquet.

A verificação do banco de dados para tipos sem suporte é feita antes de extrair para Parquet by SqlPackage, mas você pode examinar seu banco de dados rapidamente com T-SQL. A consulta de exemplo a seguir retorna um conjunto de resultados de tipos e tabelas com tipos sem suporte para gravação em arquivos 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'
)

Próximas etapas