Compartilhar via


Converter um projeto SQL original em um projeto no estilo SDK

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure

Criar um novo projeto SQL no estilo SDK é uma tarefa rápida. No entanto, se você tiver projetos SQL existentes, poderá convertê-los em projetos SQL no estilo SDK para aproveitar os novos recursos.

Depois de converter o projeto, você pode usar os novos recursos do projeto no estilo SDK, como:

  • suporte de build multiplataforma
  • formato de arquivo de projeto simplificado
  • referências de pacote

Para concluir a conversão com cuidado, iremos:

  1. Criar um backup do arquivo de projeto original.
  2. Criar um arquivo .dacpac do projeto original para comparação.
  3. Modificar o arquivo de projeto para um projeto no estilo do SDK.
  4. Criar um arquivo .dacpac do projeto modificado para comparação.
  5. Verifique se os arquivos .dacpac são os mesmos.

Não há suporte para projetos no estilo SDK do SSDT (SQL Server Data Tools) no Visual Studio. Depois de convertido, você deve usar um dos seguintes para criar ou editar o projeto:

  • a linha de comando
  • a extensão de Projetos de Banco de Dados SQL no Visual Studio Code
  • a extensão de Projetos de Banco de Dados SQL no Azure Data Studio

Pré-requisitos

Etapa 1: criar um backup do arquivo de projeto original

Antes de converter o projeto, crie um backup do arquivo de projeto original. Dessa forma, você pode reverter para o projeto original, se necessário.

No explorador de arquivos, crie uma cópia do arquivo .sqlproj para o projeto que você deseja converter com .original anexado ao final da extensão do arquivo. Por exemplo, MyProject.sqlproj se tornará MyProject.sqlproj.original.

Etapa 2: criar um arquivo .dacpac do projeto original para comparação

Abra o projeto no Visual Studio 2022. O arquivo .sqlproj ainda está no formato original, portanto, você o abre no SQL Server Data Tools original.

Compile o projeto no Visual Studio clicando com o botão direito do mouse no nó do banco de dados no Gerenciador de Soluções e selecionando Compilar.

Para criar um arquivo .dacpac a partir do projeto original, você deve usar o SQL Server Data Tools (SSDT) original no Visual Studio. Abra o arquivo de projeto no Visual Studio 2022 com o SQL Server Data Tools original instalado.

Compile o projeto no Visual Studio clicando com o botão direito do mouse no nó do banco de dados no Gerenciador de Soluções e selecionando Compilar.

Abra a pasta do projeto no VS Code ou no Azure Data Studio. Na exibição Projetos de Banco de Dados do VS Code ou do Azure Data Studio, clique com o botão direito do mouse no nó do projeto e selecione Compilar.

Os projetos de banco de dados SQL podem ser criados a partir da linha de comando usando o comando dotnet build.

dotnet build

# optionally specify the project file
dotnet build MyDatabaseProject.sqlproj

O processo de compilação cria um arquivo .dacpac na pasta bin\Debug do projeto por padrão. Usando o explorador de arquivos, localize o .dacpac criado pelo processo de build e copie-o para uma nova pasta fora do diretório do projeto como original_project.dacpac. Usamos esse arquivo .dacpac para comparação para validar nossa conversão posteriormente.

Etapa 3: modificar o arquivo de projeto para um projeto no estilo do SDK

Modificar o arquivo de projeto é um processo manual, melhor executado em um editor de texto. Abra o arquivo .sqlproj no um editor de texto e faça as seguintes alterações:

Obrigatório: adicionar a referência do SDK

Dentro do elemento project, adicione um item Sdk para fazer referência a Microsoft.Build.Sql e a versão mais recente do https://www.nuget.org/packages/Microsoft.build.sql.

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0">
  <Sdk Name="Microsoft.Build.Sql" Version="0.2.0-preview" />
...

Obrigatório: remover importações desnecessárias de destino do build

Os projetos SQL originais fazem referência a vários destinos e propriedades de build em instruções de Importação. Exceto para itens <Import/> que você adicionou explicitamente, que é uma mudança única e deliberada, remova as linhas que começam com <Import ...>. Exemplos a serem removidos se presentes em seu .sqlproj:

...
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<Import Condition="..." Project="...\Microsoft.Data.Tools.Schema.SqlTasks.targets"/>
<Import Condition="'$(SQLDBExtensionsRefPath)' != ''" Project="$(SQLDBExtensionsRefPath)\Microsoft.Data.Tools.Schema.SqlTasks.targets" />
<Import Condition="'$(SQLDBExtensionsRefPath)' == ''" Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets" />
...

Obrigatório: remover pasta Propriedades

Os projetos SQL originais têm uma entrada para uma pasta Properties que representava o acesso às propriedades do projeto no gerenciador de soluções. Este item precisa ser removido do arquivo de projeto.

Exemplo a ser removido se estiver presente em seu .sqlproj:

<ItemGroup>
  <Folder Include="Properties" />
</ItemGroup>

Opcional: Remover referências SSDT

O SSDT (SQL Server Data Tools) original exigia conteúdo extra no arquivo de projeto para detectar a instalação do Visual Studio. Essas linhas são desnecessárias em projetos SQL no estilo SDK e podem ser removidas:

  <PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">11.0</VisualStudioVersion>
    <!-- Default to the v11.0 targets path if the targets file for the current VS version is not found -->
    <SSDTExists Condition="Exists('$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets')">True</SSDTExists>
    <VisualStudioVersion Condition="'$(SSDTExists)' == ''">11.0</VisualStudioVersion>
  </PropertyGroup>

Opcional: remover configurações de build padrão

Os projetos SQL originais incluem dois blocos grandes para as configurações de build de Versão e Depuração, enquanto nos projetos SQL no estilo SDK os padrões para essas opções são conhecidos pelo SDK. Se você não tiver personalizações nas configurações de build, considere remover estes blocos:

  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <OutputPath>bin\Release\</OutputPath>
    <BuildScriptName>$(MSBuildProjectName).sql</BuildScriptName>
    <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <DefineDebug>false</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <OutputPath>bin\Debug\</OutputPath>
    <BuildScriptName>$(MSBuildProjectName).sql</BuildScriptName>
    <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <DefineDebug>true</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>

Etapa 4: criar um arquivo .dacpac do projeto modificado para comparação

O projeto SQL não é mais compatível com o Visual Studio 2022. Para construir ou editar o projeto, você deve usar um dos seguintes:

  • a linha de comando
  • a extensão de Projetos de Banco de Dados SQL no Visual Studio Code
  • a extensão de Projetos de Banco de Dados SQL no Azure Data Studio

O arquivo de projeto agora está no formato estilo SDK, mas para abri-lo no Visual Studio 2022, você deve ter o SQL Server Data Tools, estilo SDK (versão prévia) instalado e o projeto deve ter a extensão de arquivo .sqlprojx. Abra o projeto no Visual Studio 2022 com o SQL Server Data Tools, estilo SDK (versão prévia) instalado.

Abra a pasta do projeto no VS Code ou no Azure Data Studio. Na exibição Projetos de Banco de Dados do VS Code ou do Azure Data Studio, clique com o botão direito do mouse no nó do projeto e selecione Compilar.

Os projetos de banco de dados SQL podem ser criados a partir da linha de comando usando o comando dotnet build.

dotnet build

# optionally specify the project file
dotnet build MyDatabaseProject.sqlproj

O processo de compilação cria um arquivo .dacpac na pasta bin\Debug do projeto por padrão. Usando o explorador de arquivos, localize o .dacpac criado pelo processo de build e copie-o para uma nova pasta fora do diretório do projeto. Usamos esse arquivo .dacpac para comparação para validar nossa conversão posteriormente.

Etapa 5: verificar se os arquivos .dacpac são os mesmos

Para verificar se a conversão foi bem-sucedida, compare os arquivos .dacpac criados a partir dos projetos originais e modificados. Os recursos de comparação de esquemas de projetos SQL nos permitem visualizar a diferença nos modelos de banco de dados.

Você pode usar a ferramenta de comparação de esquemas no Visual Studio, Visual Studio Code ou Azure Data Studio para comparar os arquivos .dacpac. As ferramentas da comunidade baseadas na biblioteca DacFx .NET também estão disponíveis.

Inicie o Visual Studio sem um projeto carregado. Vá para Ferramentas>SQL Server>Nova Comparação de Esquemas. Selecione o arquivo original .dacpac como origem e o arquivo modificado .dacpac como destino. Para obter mais informações sobre como usar a Comparação de Esquemas no Visual Studio, consulte usando a comparação de esquemas para comparar diferentes definições de banco de dados.

A comparação de esquema gráfico ainda não está disponível na versão prévia de projetos SQL no estilo SDK no Visual Studio. Use o Azure Data Studio para comparar esquemas.

A comparação de esquemas não está disponível no Visual Studio Code. Use o Azure Data Studio ou o Visual Studio para comparar esquemas.

No Azure Data Studio, instale a extensão de Comparação de Esquemas SQL Server se ela ainda não estiver instalada. Inicie uma nova comparação de esquemas na paleta de comandos abrindo a paleta de comandos com Ctrl/Cmd+Shift+P e digitando Schema Compare.

Selecione o arquivo original .dacpac como origem e o arquivo modificado .dacpac como destino.

A comparação de esquemas gráficos está disponível no Visual Studio e no Azure Data Studio.

Quando a comparação de esquemas é executada, nenhum resultado deve ser exibido. A falta de diferenças indica que os projetos originais e modificados são equivalentes, produzindo o mesmo modelo de banco de dados no arquivo .dacpac.

Observação

A comparação de arquivos .dacpac por meio da comparação de esquemas não valida scripts pré/pós-implantação, refactorlog ou outras configurações de projeto. Ela apenas valida o modelo de banco de dados. Converter o arquivo .dacpac em .zip e comparar manualmente o conteúdo pode fornecer uma comparação mais detalhada.