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:
- Crear una copia de seguridad del archivo de proyecto original.
- Compilar un archivo
.dacpac
a partir del proyecto original para su comparación. - Modificar el archivo de proyecto para que sea un proyecto de estilo SDK.
- Compilar un archivo
.dacpac
a partir del proyecto modificado para su comparación. - 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.