Conversión de un proyecto SQL original a un proyecto de estilo SDK

Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance

La creación de un nuevo proyecto SQL de estilo SDK es una tarea rápida. Sin embargo, si tiene proyectos SQL existentes, puede convertirlos en proyectos SQL de estilo SDK para aprovechar las nuevas características.

Una vez convertido el proyecto, puede usar las nuevas características del proyecto de estilo SDK, como:

  • compatibilidad de compilación multiplataforma
  • formato de archivo de proyecto simplificado
  • referencias de paquete

Para completar la conversión con cuidado, haremos lo siguiente:

  1. Crear una copia de seguridad del archivo de proyecto original.
  2. Compilar un archivo .dacpac a partir del proyecto original para su comparación.
  3. Modificar el archivo de proyecto para que sea un proyecto de estilo SDK.
  4. Compilar un archivo .dacpac a partir del proyecto modificado para su comparación.
  5. Comprobar que los archivos .dacpac son los mismos.

Los proyectos de estilo SDK no son compatibles con SQL Server Data Tools (SSDT) en Visual Studio. Una vez convertido, debe usar una de las siguientes opciones para compilar o editar el proyecto:

  • la línea de comandos
  • la extensión Proyectos de base de datos SQL en Visual Studio Code
  • la extensión Proyectos de base de datos SQL en Azure Data Studio

Requisitos previos

Paso 1: cree una copia de seguridad del archivo de proyecto original

Antes de convertir el proyecto, cree una copia de seguridad del archivo de proyecto original. De este modo, puede revertir al proyecto original si es necesario.

En el explorador de archivos, cree una copia del archivo .sqlproj para el proyecto que desea convertir con .original anexo al final de la extensión del archivo. Por ejemplo, MyProject.sqlproj se convierte en MyProject.sqlproj.original.

Paso 2: compile un archivo .dacpac a partir del proyecto original para su comparación

Abra el proyecto en Visual Studio 2022. El archivo .sqlproj todavía está en el formato original, por lo que debe abrirlo el SQL Server Data Tools original.

Compile el proyecto en Visual Studio haciendo clic con el botón derecho en el nodo de la base de datos en el Explorador de soluciones y seleccionando Compilar.

Para compilar un archivo .dacpac desde el proyecto original, debe usar SQL Server Data Tools (SSDT) original en Visual Studio. Abra el archivo de proyecto en Visual Studio 2022 con SQL Server Data Tools original instalado.

Compile el proyecto en Visual Studio haciendo clic con el botón derecho en el nodo de la base de datos en el Explorador de soluciones y seleccionando Compilar.

Abra la carpeta del proyecto en VS Code o Azure Data Studio. En la vista Proyectos de base de datos de VS Code o Azure Data Studio, haga clic con el botón derecho en el nodo del proyecto y seleccione Compilar.

Los proyectos de base de datos SQL se pueden compilar desde la línea de comandos mediante el comando dotnet build.

dotnet build

# optionally specify the project file
dotnet build MyDatabaseProject.sqlproj

El proceso de compilación crea un archivo .dacpac en la carpeta bin\Debug del proyecto de manera predeterminada. Con el explorador de archivos, busque el .dacpac creado por el proceso de compilación y cópielo en una nueva carpeta fuera del directorio del proyecto como original_project.dacpac. Usamos este archivo .dacpac como comparación para validar la conversión más adelante.

Paso 3: modifique el archivo de proyecto para que sea un proyecto de estilo SDK

Modificar el archivo del proyecto es un proceso manual, que es mejor realizar en un editor de texto. Abra el archivo .sqlproj en un editor de texto y realice los siguientes cambios:

Obligatorio: añada la referencia del SDK

Dentro del elemento del proyecto, agregue un elemento Sdk para hacer referencia a Microsoft.Build.Sql y la versión más reciente de 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" />
...

Obligatorio: elimine las importaciones de destino de compilación innecesarias

Los proyectos SQL originales hacen referencia a varios destinos de compilación y propiedades en instrucciones de importación. Excepto para los elementos <Import/> que haya agregado explícitamente, que son cambios únicos y deliberados, elimine las líneas que comienzan por <Import ...>. Ejemplos de elementos a eliminar si están presentes en .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" />
...

Obligatorio: elimine la carpeta Propiedades

Los proyectos SQL originales tienen una entrada para una carpeta Properties que representa el acceso a las propiedades del proyecto en el Explorador de soluciones. Este elemento debe eliminarse del archivo del proyecto.

Ejemplo de un elemento a eliminar si está presentes en .sqlproj:

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

Opcional: elimine referencias de SSDT

El SQL Server Data Tools (SSDT) original requería contenido adicional en el archivo de proyecto para detectar la instalación de Visual Studio. Estas líneas son innecesarias en proyectos SQL de estilo SDK y se pueden eliminar:

  <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: elimine la configuración de compilación predeterminada

Los proyectos SQL originales incluyen dos bloques grandes para la configuración de compilaciones de publicación y depuración, mientras que en los proyectos SQL de estilo SDK, el SDK conoce los valores predeterminados de estas opciones. Si no tiene personalizaciones en la configuración de compilación, considere la posibilidad de eliminar estos bloques:

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

Paso 4: compile un archivo .dacpac a partir del proyecto modificado para su comparación

El proyecto SQL ya no es compatible con Visual Studio 2022. Para compilar o editar el proyecto, debe usar una de las siguientes opciones:

  • la línea de comandos
  • la extensión Proyectos de base de datos SQL en Visual Studio Code
  • la extensión Proyectos de base de datos SQL en Azure Data Studio

El archivo de proyecto está ahora en el formato de estilo SDK, pero para abrirlo en Visual Studio 2022, debe tener instalado SQL Server Data Tools, estilo SDK (versión preliminar) y el proyecto debe tener la extensión de archivo .sqlprojx. Abra el proyecto en Visual Studio 2022 con SQL Server Data Tools, estilo SDK (versión preliminar) instalado.

Abra la carpeta del proyecto en VS Code o Azure Data Studio. En la vista Proyectos de base de datos de VS Code o Azure Data Studio, haga clic con el botón derecho en el nodo del proyecto y seleccione Compilar.

Los proyectos de base de datos SQL se pueden compilar desde la línea de comandos mediante el comando dotnet build.

dotnet build

# optionally specify the project file
dotnet build MyDatabaseProject.sqlproj

El proceso de compilación crea un archivo .dacpac en la carpeta bin\Debug del proyecto de manera predeterminada. Con el explorador de archivos, busque el .dacpac creado por el proceso de compilación y cópielo en una nueva carpeta fuera del directorio del proyecto. Usamos este archivo .dacpac como comparación para validar la conversión más adelante.

Paso 5: compruebe que los archivos .dacpac son los mismos

Para comprobar que la conversión se ha realizado correctamente, compare los archivos .dacpac creados a partir de los proyectos originales y modificados. Las funcionalidades de comparación de esquemas de los proyectos SQL nos permiten visualizar la diferencia en los modelos de base de datos.

Puede usar la herramienta de comparación de esquemas en Visual Studio, Visual Studio Code o Azure Data Studio para comparar los archivos .dacpac. Las herramientas de la comunidad basadas en la biblioteca .NET de DacFx también están disponibles.

Inicie Visual Studio sin un proyecto cargado. Vaya a Herramientas>SQL Server>Nueva comparación de esquemas. Seleccione el archivo .dacpac original como origen y el archivo .dacpac modificado como destino. Para obtener más información sobre el uso de la comparación de esquemas en Visual Studio, consulte Uso de la comparación de esquemas para comparar distintas definiciones de base de datos.

La comparación gráfica de esquemas aún no está disponible en la versión preliminar de proyectos SQL de estilo SDK en Visual Studio. Use Azure Data Studio para comparar esquemas.

La comparación de esquemas no está disponible en Visual Studio Code. Use Azure Data Studio o Visual Studio para comparar esquemas.

En Azure Data Studio, instale la extensión Comparación de esquemas de SQL Server si aún no está instalada. Inicie una nueva comparación de esquemas desde la paleta de comandos abriendo la paleta de comandos con Ctrl/Cmd+Shift+P y escribiendo Schema Compare.

Seleccione el archivo .dacpac original como origen y el archivo .dacpac modificado como destino.

La comparación gráfica de esquemas está disponible en Visual Studio y Azure Data Studio.

Cuando se ejecuta la comparación de esquemas, no debe aparecer ningún resultado. La falta de diferencias indica que el proyecto original y el modificado son equivalentes, produciendo el mismo modelo de base de datos en el archivo .dacpac.

Nota:

La comparación de archivos .dacpac a través de la comparación de esquemas no valida los scripts anteriores o posteriores a la implementación, el refactorlog u otra configuración del proyecto. Solo valida el modelo de base de datos. Convertir el .dacpac en un archivo .zip y comparar manualmente el contenido puede ofrecer una comparación más detallada.