Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a: SQL Server 2022 (16.x) e versões
posteriores Azure SQL Database
AzureSQL Managed Instance
SQL database in Microsoft Fabric
Um projeto de banco de dados SQL é uma representação local de objetos SQL que compõem o esquema para um único banco de dados, como tabelas, procedimentos armazenados ou funções. O ciclo de desenvolvimento de um projeto de banco de dados SQL permite que o desenvolvimento de banco de dados seja integrado em fluxos de trabalho de integração contínua e implantação contínua (CI/CD) conhecidos como uma prática recomendada de desenvolvimento.
Overview
Os projetos SQL são baseados em instruções T-SQL declarativas. No código do projeto do banco de dados SQL, você cria cada objeto uma vez. Se precisar alterar algo sobre esse objeto, como adicionar colunas ou alterar um tipo de dados, modifique o arquivo singular que declara o objeto pela primeira e única vez.
Quando um projeto de banco de dados SQL é criado, o artefato de saída é um arquivo .dacpac. Os bancos de dados novos e existentes podem ser atualizados para corresponder ao conteúdo do .dacpac publicando o .dacpac em um banco de dados de destino.
O banco de dados SQL projeta a estrutura em torno do código do banco de dados que adiciona dois recursos fundamentais a esse conjunto de arquivos com seu processo de compilação:
- validação de referências entre objetos e a sintaxe em relação a uma versão específica do SQL
- de implantação do artefato de compilação em bancos de dados novos ou existentes
A funcionalidade para projetos de banco de dados SQL é fornecida pela biblioteca Microsoft.SqlServer.DacFx .NET e é apresentada em várias ferramentas de parade desenvolvimento SQL. O DacFx tem vários pontos de extensibilidade, como a modificação de etapas de implantação e a capacidade de criar regras personalizadas para análise de código. O SDK do projeto para projetos SQL é Microsoft.Build.Sql, é aconselhado para novo desenvolvimento e é o formato usado pela extensão Projetos do Banco de Dados SQL para Azure Data Studio e VS Code. O suporte para projetos SQL no estilo SDK no Visual Studio está em visualização.
Validation
Quando um projeto SQL é criado, as relações entre objetos são validadas. Por exemplo, uma definição de exibição não pode conter uma tabela ou colunas que não existem no projeto SQL.
Além disso, um projeto SQL contém uma propriedade em seu arquivo .sqlproj chamada "plataforma de destino". Essas informações são usadas durante o processo de compilação para validar que as funções e a sintaxe T-SQL existem nessa versão do SQL. Por exemplo, as funções JSON adicionadas no SQL Server 2022 não podem ser usadas em um projeto SQL definido como a plataforma de destino Sql140 (SQL Server 2017).
Para criar um projeto SQL, executamos dotnet build a partir da linha de comando. Em ferramentas gráficas que dão suporte a projetos SQL (Azure Data Studio, VS Code e Visual Studio), há um item de menu para criar o projeto SQL.
A saída do console do processo de compilação pode conter erros (falha de compilação) ou avisos. Os avisos de compilação podem incluir invólucros inconsistentes em nomes de objetos e outras práticas recomendadas personalizáveis, mas não falhe na compilação.
A saída de artefato do processo de compilação é um arquivo .dacpac, que pode ser encontrado para uma compilação com configurações padrão na pasta bin/Debug.
Deployment
O arquivo de saída, .dacpac, é um artefato poderoso, reutilizável e declarativo. Com este arquivo, podemos usar SqlPackage ou outras ferramentas para aplicar nosso código de banco de dados a um banco de dados. O comando SqlPackage para implantar um .dacpac é o comando publish.
Por exemplo, sqlpackage /Action:Publish /SourceFile:yourfile.dacpac /TargetConnectionString:{yourconnectionstring}.
Novas bases de dados
SqlPackage navega pelas relações de objeto para criar cada objeto na ordem certa ao publicar um dacpac em um novo banco de dados. Por exemplo, SqlPackage cria Table_A antes Table_B quando Table_B tem uma chave estrangeira para Table_A.
Você não quer estar executando uma pasta inteira de scripts SQL, especialmente quando você poderia estar usando projetos SQL que executa automaticamente cada seção T-SQL na ordem certa com base em relações de objeto.
Bases de dados existentes
Além de navegar na hierarquia de objetos ao publicar em novos bancos de dados, o processo de publicação .dacpac também calcula a diferença entre um banco .dacpac de dados de origem e um banco de dados de destino antes de determinar quais etapas ele precisa executar para atualizar esse banco de dados. Por exemplo, se Table_C estiver faltando duas colunas no banco de dados que ele tem no projeto SQL e StoredProcedure_A foi alterado, SqlPackage cria uma instrução ALTER TABLE e uma instrução ALTER PROCEDURE em vez de tentar cegamente criar um monte de objetos.
A flexibilidade fornecida pelo comando publish para bancos de dados existentes não se limita a um único banco de dados. Um .dacpac pode ser implantado várias vezes, como ao atualizar uma frota de cem bancos de dados.
Quando utilizar
Os projetos de banco de dados SQL são uma ótima opção para equipes que procuram integrar o desenvolvimento de banco de dados em um fluxo de trabalho de CI/CD. A natureza declarativa dos projetos SQL permite uma única fonte de verdade para o esquema de banco de dados, e o processo de compilação e publicação fornece uma maneira repetível e confiável de implantar alterações em bancos de dados.
Os projetos de banco de dados SQL são usados para rastrear a origem da verdade para o estado do banco de dados, incluindo o desenvolvimento com um mapeador objeto-relacional (ORM), como o EF Core. Uma ferramenta gráfica ou a linha de comando pode ser usada para extrair o esquema de um banco de dados para um projeto SQL, independentemente do ORM usado para criar o banco de dados.
Os projetos de banco de dados SQL dão suporte à família de bancos de dados SQL Server e Azure SQL, incluindo o Banco de Dados SQL do Azure e o Azure Synapse Analytics. Quer esteja a desenvolver uma aplicação ou um armazém de dados, os projetos da base de dados SQL podem ser utilizados para gerir o esquema da sua base de dados. Os projetos SQL podem ser desenvolvidos a partir de ferramentas no Visual Studio, VS Code e Azure Data Studio.
Projetos originais vs projetos no estilo SDK
O formato de projeto ao estilo SDK do Microsoft.Build.SQL baseia-se nos novos projetos ao estilo SDK introduzidos no .NET Core e é o formato utilizado pela extensão SQL Database Projects para VS Code e com a base de dados SQL no Fabric com controlo de versões integrado. Os projetos Microsoft.Build.Sql estão substituindo o formato de projeto SQL original baseado no MSBuild (.NET Framework).
Observação
O Visual Studio 2026 suporta apenas o formato original do projeto SQL. Projetos SQL ao estilo SDK estão em pré-visualização no Visual Studio 2022 e geralmente disponíveis no VS Code. Saiba mais sobre as ferramentas de projetos SQL.
O novo trabalho de desenvolvimento deve considerar o uso de projetos Microsoft.Build.Sql, pois os projetos no estilo SDK são o formato que será suportado no futuro. O formato de projeto no estilo SDK é mais flexível e contém novos recursos não disponíveis com os projetos SQL originais:
- Suporte para .NET 8+ (multiplataforma)
- Referências de pacote do NuGet para referências de banco de dados
- Padrão de globbing padrão para arquivos .sql no projeto
Os projetos no estilo SDK têm um superconjunto de funcionalidades dos projetos SQL originais e os projetos SQL existentes podem ser convertidos em projetos no estilo SDK por meio de modificação do arquivo de projeto.
A exceção à cobertura de funcionalidades é o suporte para objetos SQLCLR, que são suportados tanto em projetos SQL originais como em estilo SDK, mas que requerem .NET Framework. Um projeto SQL original que contenha objetos SQLCLR pode ser convertido para um projeto do estilo SDK, mas o projeto requer .NET Framework em vez de .NET para a construção do projeto. Depois de ser construído o projeto com o objeto SQLCLR, o .dacpac pode ser implementado usando o SqlPackage no .NET e no .NET Framework e pode ser usado como uma referência de .dacpac em um projeto (mesma base de dados ou servidor diferente).
Conteúdo relacionado
- Project-Oriented Desenvolvimento de Banco de Dados Offline
- Extensão de Projetos de Banco de Dados SQL
- SqlPackage
- Exemplos de pipelines CI/CD para projetos SQL
- GitHub sql-action
- implantações do Azure DevOps SQL
- Visão geral dos aplicativos da camada de dados (DAC)
- repositório de feedback DacFx
- Introdução aos projetos de banco de dados SQL
- Tutorial: Criar e implantar um projeto SQL