Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

923
Views
¿Cómo compilar .sqlproj que requiere SSDT en un contenedor acoplable de Linux?

Quiero construir un .sqlproj dentro de un contenedor de Linux. El problema es que la construcción de .sqlproj depende de SSDT y hasta ahora no puedo encontrar SSDT que se pueda instalar de forma independiente en Linux .

Error que veo al ejecutar 'dotnet msbuild' en mi contenedor:

 error MSB4019: The imported project "/usr/share/dotnet/sdk/2.2.402/Microsoft/VisualStudio/v11.0/SSDT/Microsoft.Data.Tools.Schema.SqlTasks.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.

Al buscar el problema en el archivo .sqlproj, veo que estamos tratando de importar un archivo Schema.SqlTasks.targets, que supongo que SSDT crea:

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

Veo el mismo error probando 'dotnet build'

Hay una opción independiente de Windows:

https://docs.microsoft.com/en-us/sql/ssdt/download-sql-server-data-tools-ssdt?redirectedfrom=MSDN&view=sql-server-ver15

https://www.nuget.org/packages/Microsoft.Data.Tools.Msbuild/10.0.61804.210

¿Alguien ha encontrado una manera de proporcionar SSDT en un contenedor de Linux?

Estado objetivo: el paso de compilación para generar los dacpacs ocurriría dentro del contenedor.

Estado actual: por ahora estoy usando Visual Studio en mi máquina como la máquina de compilación, luego copio los dacpacs en el contenedor donde sqlpackage.exe puede publicar el esquema.

¿Por qué Linux? Esta base de datos dockerizada admitirá una pila de servicios que se ejecutan en contenedores de Linux, por lo que un contenedor de Windows no es ideal.

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Bien, con un poco de ayuda de ErikEJ y otros miembros de la comunidad, en el enlace de GitHub que Brett Rowberry te proporcionó en los comentarios, finalmente descubrí cómo hacer esto.

Los pasos a seguir son bastante sencillos.

  1. Agregue su proyecto de SQL Server
  2. Agregue un proyecto de biblioteca de clase estándar de .NET y llámelo algo como "database.build"
  3. elimine todo el código del proyecto de la biblioteca de clases y modifique el archivo csproj para que lea algo como lo siguiente

Imagen del contenido del archivo Csproj

  1. Cambie las propiedades de su solución para NO compilar el proyecto del servidor sql para todas las configuraciones.

Una vez que haya hecho esto, encontrará que aún tiene acceso al proyecto de base de datos SQL en Visual Studio, y obtiene todo el resaltado de sintaxis e inteligencia, pero su CI compilará el código SQL a través de la biblioteca de clases vinculada y producirá un dacpac en su carpeta de salida está lista para ser implementada.

Hacer clic con el botón derecho en el proyecto le permitirá compilarlo desde Visual Studio, y hacer clic con el botón derecho y seleccionar "Publicar" le permitirá especificar los parámetros de su base de datos y publicarlo en el servidor de base de datos que se está utilizando. Si ya tiene otros objetos en su base de datos a los que necesita hacer referencia, puede crear un objeto solo dacpac desde la base de datos, utilizando SQL Server Management Studio, que luego puede agregar a su proyecto y verificar con sus fuentes para que lo haga no es necesario recrear todos los objetos que ya tenga.

Escribí una publicación de blog que lo explica todo detalladamente aquí: https://shawtyds.wordpress.com/2020/08/26/using-a-full-framework-sql-server-project-in-a-net- proyecto-central-construir/

over 4 years ago · Santiago Trujillo Report

0

Tuve el mismo problema que hice como solución:

1- Script sql generado del proyecto de base de datos "Generar script"

ingrese la descripción de la imagen aquí

2- Seguí este ejemplo de código para ejecutar el script en el contenedor de Linux

https://github.com/microsoft/mssql-docker/issues/2#issuecomment-547699532

https://github.com/lkurzyniec/netcore-boilerplate/tree/master/db/mssql

https://github.com/lkurzyniec/netcore-boilerplate/blob/master/docker-compose.yml

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!