Adición de archivos existentes a un proyecto SQL

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL database in Microsoft Fabric

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 .dacpac archivo se puede generar como un artefacto de compilación de un proyecto de 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 un .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.

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

Durante la importación, las definiciones de los objetos se generan en archivos del proyecto utilizando 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 en línea siempre que sea posible. Para obtener una visibilidad y un control más específicos para cada objeto, use Schema Compare en lugar de usar 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:

  • Utiliza la extensión Comparación de esquemas en Visual Studio Code 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: agregando los archivos de script al directorio del proyecto o procesando el 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 no SDK, debe importar los scripts SQL existentes en el proyecto utilizando el procesamiento del script 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 podría 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.

Archivos XSD

Los proyectos de SQL también admiten la importación de archivos XSD para generar colecciones de esquemas XML en la base de datos. Para obtener más información sobre cómo configurar archivos XSD en un proyecto de SQL, vea Colecciones de esquemas XML en proyectos sql.