Partilhar via


Converter um projeto SQL original em um projeto no estilo SDK

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada SQL do Azurebanco de dados SQL no Microsoft Fabric

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 para compilação multiplataforma
  • Formato de arquivo de projeto simplificado
  • Referências do pacote

Para completar a conversão cuidadosamente, vamos:

  1. Crie um backup do arquivo de projeto original.
  2. Crie um arquivo .dacpac a partir do projeto original para comparação.
  3. Modifique o arquivo de projeto para um projeto no estilo SDK.
  4. Crie um arquivo de .dacpac a partir 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 no SSDT (SQL Server Data Tools) no Visual Studio. Uma vez convertido, você deve usar uma das seguintes opções para criar ou editar o projeto:

  • a linha de comando
  • a extensão Projetos do Banco de Dados SQL no Visual Studio Code
  • a extensão Projetos do Banco de Dados SQL no Azure Data Studio
  • os SQL Server Data Tools no estilo SDK (em pré-visualização) no Visual Studio 2022

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. Desta 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 no final da extensão de arquivo. Por exemplo, MyProject.sqlproj torna-se MyProject.sqlproj.original.

Etapa 2: Criar um arquivo de .dacpac a partir 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.

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

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

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

Abra a pasta do projeto no VS Code ou no Azure Data Studio. No modo de 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 Criar.

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 compilação e copie-o para uma nova pasta fora do diretório do projeto como original_project.dacpac. Usamos este arquivo .dacpac para comparação para validar nossa conversão mais tarde.

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

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

Obrigatório: adicione a referência do SDK

Dentro do elemento do projeto, adicione um item Sdk para referenciar Microsoft.Build.Sql e a versão mais recente de https://www.nuget.org/packages/Microsoft.build.sql, onde #.#.# está incluído no trecho abaixo.

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

Necessário: remova importações de destino de compilação desnecessárias

Os projetos SQL originais fazem referência a vários alvos e propriedades de construção em declarações Import. Com exceção dos itens <Import/> que adicionaste explicitamente, que é uma alteração única e deliberada, remove as linhas que começam com <Import ...>. Exemplos a remover caso estejam presentes no 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" />
...

Necessá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 remover caso esteja presente no seu .sqlproj:

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

Obrigatório: Remover itens de compilação incluídos por padrão

Os projetos SQL originais listam todos os arquivos .sql que representam objetos de banco de dados explicitamente no arquivo de projeto como itens <Build Include="..." />. Em projetos SQL no estilo SDK, todos os arquivos .sql na árvore de pastas do projeto (**/*.sql) são incluídos por padrão, portanto, remover os itens <Build Include="...." /> para esses arquivos é necessário para evitar problemas de desempenho de compilação.

Linhas que devem ser removidas do arquivo de projeto, por exemplo:

  <Build Include="SalesLT/Products.sql" />
  <Build Include="SalesLT/SalesLT.sql" />
  <Build Include="SalesLT/Categories.sql" />
  <Build Include="SalesLT/CategoriesProductCount.sql" />

Você não deve remover <PreDeploy Include="..." /> ou <PostDeploy Include="..." /> itens, porque esses nós ditam comportamento específico para esses arquivos. Você também não deve remover itens <Build Include="..." /> para arquivos que não estão na árvore de pastas do projeto SQL.

Opcional: Remover referências SSDT

O SSDT (SQL Server Data Tools) original exigia conteúdo extra no arquivo de projeto para detetar 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 compilação padrão

Os projetos SQL originais incluem dois grandes blocos para configurações de compilação Release e Debug, enquanto em 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 compilação, 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>

As propriedades do projeto na referência listam as propriedades disponíveis e seus valores padrão.

Etapa 4: Criar um arquivo de .dacpac a partir do projeto modificado para comparação

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

  • a linha de comando
  • a extensão Projetos do Banco de Dados SQL no Visual Studio Code
  • a extensão Projetos do Banco de Dados SQL no Azure Data Studio
  • os SQL Server Data Tools no estilo SDK (em pré-visualização) no Visual Studio 2022

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 (visualização) instalado. Abra o projeto no Visual Studio 2022 com SQL Server Data Tools e o estilo SDK (pré-visualização) instalado.

Abra a pasta do projeto no VS Code ou no Azure Data Studio. No modo de 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 Criar.

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 compilação e copie-o para uma nova pasta fora do diretório do projeto. Usamos este arquivo .dacpac para comparação para validar nossa conversão mais tarde.

Etapa 5: Verifique 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 esquema dos projetos SQL permitem-nos visualizar a diferença nos modelos de banco de dados entre os dois arquivos .dacpac. Como alternativa, o utilitário de linha de comando DacpacVerify pode ser usado para comparar os dois arquivos .dacpac, incluindo seus scripts pré/pós-implantação e configurações do projeto.

DacpacVerify está disponível para instalação como uma ferramenta do .NET . Para instalar a ferramenta, execute o seguinte comando:

dotnet tool install --global Microsoft.DacpacVerify --prerelease

A sintaxe para DacpacVerify é especificar o caminho de arquivo para dois arquivos .dacpac como dacpacverify <source DACPAC path> <target DACPAC path>. Para comparar os dois arquivos .dacpac, execute o seguinte comando:

DacpacVerify original_project.dacpac modified_project.dacpac

Você pode usar a ferramenta de comparação de esquema no Visual Studio ou no Azure Data Studio para comparar objetos nos arquivos .dacpac.

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

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

A comparação de esquema 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 SQL Server Schema Compare se ainda não estiver instalada. Inicie uma nova comparação de esquema a partir da paleta de comandos abrindo a paleta de comandos com Ctrl/Cmd+Shift+P e digitando Schema Compare.

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

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

Quando a comparação de esquema é 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 através da comparação de esquema não valida scripts de pré e pós-implementação, refactorlog ou outras configurações de projeto. Ele apenas valida o modelo de banco de dados. Usar o utilitário de linha de comando DacpacVerify é a maneira recomendada de validar se os dois arquivos .dacpac são equivalentes.