Compartilhar via


SqlPackage no banco de dados SQL no Microsoft Fabric

Aplica-se a:banco de dados SQL no Microsoft Fabric

Neste tutorial, você aprenderá a trabalhar com o SqlPackage no banco de dados SQL no Fabric.

O SqlPackage é uma CLI que fornece portabilidade de banco de dados e implantações de banco de dados.

  • A portabilidade (importação/exportação) de um banco de dados gerenciado no Azure ou no Fabric garante que seus dados sejam portáteis para outras plataformas caso você queira migrar posteriormente. – A portabilidade inclui a movimentação de e para o SQL Server, o Banco de Dados SQL do Azure, a Instância Gerenciada de SQL do Azure e o Banco de Dados SQL no Fabric por meio de cópias de banco de dados independentes (.bacpac ou .dacpac arquivos).

O SqlPackage também pode permitir implantações fáceis de banco de dados de alterações incrementais em objetos de banco de dados (novas colunas em tabelas, alterações em procedimentos armazenados existentes etc.).

  • O SqlPackage pode extrair um arquivo .dacpac que contém as definições de objetos em um banco de dados e publicar um arquivo .dacpac para aplicar esse estado de objeto a um banco de dados novo ou existente.
  • A operação de publicação também se integra a projetos SQL, o que permite ciclos de desenvolvimento offline e mais dinâmicos para bancos de dados SQL.

Pré-requisitos

Instalação

O SqlPackage está disponível para Windows, macOS e Linux como uma ferramenta dotnet. Instale-o usando o comando a seguir:

dotnet tool install --global Microsoft.SqlPackage

Como uma ferramenta dotnet global, o SqlPackage está disponível em seu terminal como sqlpackage em qualquer pasta.

Importar um banco de dados com SqlPackage

Uma .bacpac é uma cópia portátil de um banco de dados, útil para alguns cenários de migração e teste. Você pode importá-lo.bacpac para um banco de dados SQL vazio com a importação do SqlPackage.

Observação

Um .bacpac não é um backup ou uma substituição para recursos de backup/restauração. Para obter mais informações sobre backups para o banco de dados SQL no Fabric, consulte backups automáticos no banco de dados SQL no Microsoft Fabric e restauração de um backup no banco de dados SQL no Microsoft Fabric.

  1. Se estiver usando um .bacpac ambiente do Azure ou do SQL Server, talvez seja necessário alterar o banco de dados de origem para atender ao banco de dados SQL na área de superfície T-SQL do Fabric. Consulte extrair e publicar portabilidade para um método alternativo que permite às propriedades do SqlPackage ignorar alguns objetos sem suporte.

  2. Crie seu novo banco de dados SQL no Fabric como de costume por meio da interface do Fabric.

  3. Copie a cadeia de conexão das configurações.

    Captura de tela do portal do Fabric mostrando a página Cadeias de conexão do banco de dados SQL.

  4. Use o comando de importação do terminal na pasta do SqlPackage. Forneça seu proprietário <servername> e <database_name>.

    sqlpackage /action:import /sourcefile:"C:\DatabaseName.bacpac" /targetconnectionstring:"Data Source=tcp:<server_name>.database.fabric.microsoft.com,1433;Initial Catalog=<database_name>;MultipleActiveResultSets=False;Connect Timeout=30;Encrypt=True;TrustServerCertificate=False;ConnectRetryCount=6;ConnectRetryInterval=10;Authentication=Active Directory Interactive"
    
    • Substitua a cadeia de conexão da caixa de diálogo configurações do banco de dados SQL.
    • Substitua o valor sourcefile pelo .bacpac nome (DatabaseName) e location no computador local.
  5. Siga a importação com uma atividade de cópia no Data Factory no Microsoft Fabric. Para começar, consulte Início Rápido: Criar um trabalho de Cópia.

Exportar um banco de dados com SqlPackage

Exportar uma .bacpac é a operação inversa, em que você targetfile é um .bacpac e seusourceconnectionstring pode ser encontrado na caixa de diálogo configurações do banco de dados SQL, como no exemplo anterior. Forneça seu proprietário <servername> e <database_name>. Por exemplo:

sqlpackage /action:export /targetfile:"C:\DatabaseName.bacpac" /sourceconnectionstring:"Data Source=tcp:<server_name>.database.fabric.microsoft.com,1433;Initial Catalog=<database_name>;MultipleActiveResultSets=False;Connect Timeout=30;Encrypt=True;TrustServerCertificate=False;ConnectRetryCount=6;ConnectRetryInterval=10;Authentication=Active Directory Interactive"

Para obter mais informações sobre exportação, consulte a Exportação do SqlPackage.

Extrair e publicar

Diagrama de como projetos de banco de dados SQL podem mover alterações de esquema.

Um .dacpac é um arquivo de modelo de esquema de banco de dados, contendo definições para as tabelas, procedimentos armazenados e outros objetos no banco de dados de origem. Esse arquivo pode ser criado a partir de um banco de dados existente com SqlPackage ou de um projeto de banco de dados SQL.

O SqlPackage é capaz de implantar um .dacpac para um banco de dados novo (vazio) ou atualizar incrementalmente um banco de dados existente para corresponder ao estado .dacpac desejado.

  • Extrair cria um .dacpac ou arquivos do SQL de um banco de dados existente.
  • Publicar implanta um .dacpac em um banco de dados.

A sintaxe de publish e extract do SqlPackage é semelhante aos comandos import/export.

Aviso

É recomendável usar o SqlPackage para implantar um projeto SQL ou .dacpac no banco de dados SQL no Fabric. A implantação de um .dacpac do Visual Studio pode não ter êxito.

Para implantar um .dacpac criado do Banco de Dados SQL do Azure, do SQL Server ou de um projeto SQL direcionado a uma plataforma diferente do banco de dados SQL no Fabric, acrescente a propriedade /p:AllowIncompatiblePlatform=true ao comando de publicação SqlPackage.

Extrair e divulgar a portabilidade

Embora os comandos de importação/exportação do SqlPackage estejam focados na portabilidade de dados com o .bacpac formato, os comandos de extração e publicação são capazes de portabilidade de dados com o .dacpac formato. As propriedades de extração e publicação podem ser usadas para controlar o comportamento das operações de extração e publicação e fornecer mais flexibilidade para conversões entre plataformas.

Para extrair um .dacpac e incluir os dados, use a /p:ExtractAllTableData=true propriedade. A operação de extração cria um .dacpac que contém o esquema e os dados do banco de dados de origem. A propriedade /p:ExtractReferencedServerScopedElements=false exclui elementos com escopo de servidor, que não têm suporte no banco de dados SQL no Fabric. O comando a seguir extrai um .dacpac com dados de um banco de dados SQL existente no Fabric:

sqlpackage /action:extract /sourceconnectionstring:"Data Source=tcp:<server_name>.database.fabric.microsoft.com,1433;Initial Catalog=<database_name>;MultipleActiveResultSets=False;Connect Timeout=30;Encrypt=True;TrustServerCertificate=False;ConnectRetryCount=6;ConnectRetryInterval=10;Authentication=Active Directory Interactive" /targetfile:"C:\extracted.dacpac" /p:ExtractAllTableData=true  /p:ExtractReferencedServerScopedElements=false

Para publicar um .dacpac que foi extraído com os dados, nenhuma propriedade extra é necessária. No entanto, várias propriedades podem ser usadas para controlar o comportamento da operação de publicação:

  • /p:AllowIncompatiblePlatform=true permite a implantação de uma .dacpac que foi extraída de uma plataforma diferente (por exemplo, Banco de Dados SQL do Azure, SQL Server).
  • /p:ExcludeObjectTypes=Logins;Users exclui tipos de objeto que podem apresentar problemas de compatibilidade ao publicar no banco de dados SQL no Fabric. Para obter uma lista completa de tipos de objeto que podem ser excluídos, consulte a publicação do SqlPackage.

Da mesma forma que o comando de importação do SqlPackage, antes de publicar um banco de dados SQL no Fabric, você precisa criar o banco de dados no Fabric. Você pode criar o banco de dados por meio do portal do Fabric ou de outra interface do Fabric. O seguinte comando publica o extraído .dacpac em um banco de dados SQL vazio no Fabric:

sqlpackage /action:publish /sourcefile:"C:\extracted.dacpac" /targetconnectionstring:"Data Source=tcp:<server_name>.database.fabric.microsoft.com,1433;Initial Catalog=<database_name>;MultipleActiveResultSets=False;Connect Timeout=30;Encrypt=True;TrustServerCertificate=False;ConnectRetryCount=6;ConnectRetryInterval=10;Authentication=Active Directory Interactive" /p:AllowIncompatiblePlatform=true /p:ExcludeObjectTypes=Logins;Users