Compartir vía


Adición de archivos existentes a un proyecto SQL

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

Como concepto, una vez que se crea un proyecto SQL, los objetos se pueden agregar uno a uno o de forma masiva. La adición de objetos de uno en uno es sencilla, mientras que la adición de objetos de forma masiva se puede realizar desde el contenido de un archivo .dacpac, o bien uno o varios scripts SQL. En este artículo se explica cómo agregar el contenido de un script de dacpac o SQL a un proyecto SQL y los inconvenientes entre los orígenes.

Importación desde un archivo .dacpac

Un archivo .dacpac es un modelo de base de datos compilado y necesita herramientas específicas para leer y aplicar el archivo. Un archivo .dacpac se puede generar como un artefacto de compilación de un proyecto SQL o desde una base de datos existente, y es posible que se le proporcione uno sin acceso al origen. Además de las muchas herramientas que pueden aplicar .dacpac a una base de datos, SQL Server Data Tools (SSDT) en Visual Studio puede importar el contenido de un archivo .dacpac directamente en un proyecto. La capacidad de importar el esquema a partir de una base de datos o un archivo .dacpac solo está disponible si no hay objetos de esquema ya definidos en el proyecto.

Captura de pantalla del menú de importación en un proyecto SQL en SSDT de Visual Studio.

Durante la importación, las definiciones de objeto se incluyen en archivos del proyecto con los valores predeterminados de organización de SSDT para los nuevos objetos: nuevos archivos para los objetos de nivel superior, elementos secundarios jerárquicos definidos en el mismo archivo que el primario, restricciones de tabla y columna definidas insertadas siempre que sea posible. Para definir más la visibilidad y el control de cada objeto, use Comparación de esquema en lugar de Importar. Si el origen de la importación contiene scripts previos o posteriores a la implementación, instancias de RefactorLog o definiciones de variables SQLCMD, se importan en el proyecto. Si el proyecto ya contiene alguno de estos artefactos, los archivos importados se agregan a una carpeta Omitido al importar del proyecto.

Si Visual Studio y SQL Server Data Tools no están disponibles, puede:

  • Usar la extensión Comparación de esquemas en Azure Data Studio para comparar el contenido de un archivo .dacpac con un proyecto y, después, aplicar selectivamente los cambios al proyecto.
  • Usar la utilidad de línea de comandos SqlPackage para importar el contenido de un archivo .dacpac en una base de datos y, después, crear un proyecto a partir de la base de datos.

Importación desde scripts de SQL

Los scripts de T-SQL se pueden importar en un proyecto SQL de dos maneras: mediante la adición de los archivos de script al directorio del proyecto, o bien mediante el procesamiento del contenido de los scripts en Visual Studio. El método que elija depende del tipo de proyecto y del nivel de control deseado sobre el proceso de importación. En ambos casos, la sintaxis de los archivos de script debe ser válida.

Adición de archivos a un proyecto

Con los proyectos SQL de estilo SDK, puede agregar scripts de SQL existentes a un proyecto si los coloca en el directorio del proyecto porque Microsoft.Build.Sql incluye automáticamente los archivos *.sql del proyecto. Si usa un proyecto de estilo que no es de SDK, debe importar los scripts de SQL existentes en el proyecto mediante el procesamiento de scripts en Visual Studio. Los archivos *.sql incluidos automáticamente en el proyecto se incluyen en la compilación del modelo de base de datos como objetos SQL.

Un archivo agregado a la carpeta del proyecto que contiene una definición de objeto duplicada de un objeto que ya está presente en el proyecto hace que se produzca un error en la compilación del proyecto. Debe resolver manualmente el conflicto y quitar el objeto duplicado o bien cambiar el nombre de uno de los objetos.

Para agregar un archivo a un proyecto como script previo o posterior a la implementación, además de agregar el archivo al directorio del proyecto, también debe incluir el archivo en el archivo del proyecto. Por ejemplo, para agregar un archivo denominado Pre-DeploymentScript.sql como script previo a la implementación, agregue lo siguiente al archivo del proyecto:

<ItemGroup>
  <PreDeploy Include="Pre-DeploymentScript.sql" />
</ItemGroup>

Puede encontrar más información sobre los scripts previos y posteriores a la implementación en la documentación de proyectos SQL.

Procesamiento del contenido de los archivos

SQL Server Data Tools (SSDT) en Visual Studio también tiene la capacidad de procesar el contenido de los scripts SQL al agregarlos a un proyecto de estilo original. Durante este procesamiento, si un script contiene un objeto ya definido en el proyecto, la definición del objeto se actualiza para que coincida con el script. Si el script contiene un objeto que aún no está definido en el proyecto, se crea un archivo para el objeto.

Hay problemas conocidos en los que el procesamiento de scripts puede dar lugar a instrucciones de clave de cifrado y restricción duplicadas. Si se producen estos problemas, use la ventana de salida de compilación para identificar el origen de los duplicados y quitarlos manualmente del proyecto.

El proceso Importar a partir del script no incorpora scripts previos o posteriores a la implementación, variables SQLCMD ni archivos RefactorLog. Estas y cualquier otra construcción no admitida que se detecte en la importación se colocan en un archivo ScriptsIgnoredOnImport.sql de una carpeta Scripts del proyecto.