Compartir por


Introducción a las referencias de paquetes de proyectos SQL

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

Las referencias de paquetes en proyectos SQL permiten hacer referencia a objetos de base de datos de otros proyectos o paquetes NuGet. Los objetos de base de datos agregados a un proyecto a través de referencias de paquete pueden formar parte de la misma base de datos, una base de datos diferente en el mismo servidor o una base de datos diferente en un servidor diferente.

Nota:

Las referencias de paquete son el método recomendado para hacer referencia a objetos de base de datos en el nuevo desarrollo. Hacer referencia a paquetes NuGet solo se permite en proyectos SQL de estilo SDK (versión preliminar).

Referencias de paquetes de objetos de base de datos

Las referencias de paquete son uno de los varios métodos para agregar objetos de base de datos a un proyecto SQL como referencia de base de datos. Las referencias de paquete pueden contener objetos para la misma base de datos, una base de datos diferente en el mismo servidor o una base de datos diferente en otro servidor. Las referencias de paquete se pueden usar para dividir una base de datos en proyectos más pequeños y administrables, lo que puede ayudar a reducir el tiempo necesario para crear un proyecto durante el desarrollo local iterativo.

Captura de pantalla de un ejemplo de un proyecto SQL que hace referencia a dos paquetes y un proyecto para referencias de base de datos.

Ejemplo y sintaxis del archivo de proyecto SQL

Las referencias de paquete se agregan a un proyecto SQL mediante entradas en el archivo .sqlproj, de manera similar a los proyectos en C#. Cuando una referencia de paquete es a una base de datos diferente en el mismo servidor, se incluye un elemento <DatabaseSqlCmdVariable> en la referencia del paquete. Cuando una referencia de paquete es a una base de datos diferente en otro servidor, también se incluye un elemento <ServerSqlCmdVariable> en la referencia del paquete. Las referencias de paquete a la misma base de datos no incluyen elementos <ServerSqlCmdVariable> ni <DatabaseSqlCmdVariable>.

En el ejemplo siguiente se incluye una referencia de paquete al paquete Contoso.AdventureWorks.SalesLT como referencia de base de datos para la misma base de datos en la que los objetos del paquete forman parte del modelo de base de datos en el proyecto SQL:

...
  <ItemGroup>
    <PackageReference Include="Contoso.AdventureWorks.SalesLT" Version="1.1.0" />
  </ItemGroup>
</Project>

Bases de datos del sistema

Las bases de datos del sistema SQL (master, msdb) se publican en NuGet.org como paquetes de referencia de base de datos. Estos paquetes contienen el esquema de las bases de datos del sistema y se pueden usar como referencias de paquete en proyectos SQL. Los paquetes de base de datos del sistema se versionan para alinearlos con la versión de SQL Server con la que están asociados. Por ejemplo, el paquete de base de datos del sistema master para SQL Server 2022 es Microsoft.SqlServer.Dacpacs.Master versión 160.2.1 y se puede agregar a un proyecto SQL como referencia de paquete:

...
  <ItemGroup>
    <PackageReference Include="Microsoft.SqlServer.Dacpacs.Master" Version="160.2.1" />
  </ItemGroup>
</Project>

Los cambios de versión secundaria reflejan correcciones de errores y cambios menores en el esquema dentro de una versión de SQL Server.

Los paquetes de base de datos del sistema disponibles son:

Paquetes NuGet de paquete dacpac

Un paquete de referencia de base de datos es un paquete NuGet que contiene un archivo .dacpac. El paquete NuGet se puede publicar en un feed de NuGet, como Azure Artifacts, para su uso en proyectos SQL. La creación de este paquete sigue el mismo proceso que la creación de un paquete NuGet para otros tipos de proyectos. Para obtener más información, consulte Creación de un paquete con la CLI de dotnet.

Captura de pantalla del resumen de la referencia del paquete para el proceso de proyectos SQL.

Para empaquetar un archivo .sqlproj como un paquete NuGet, use el comando dotnet pack desde la línea de comandos. De forma predeterminada, el comando dotnet pack crea un paquete NuGet a partir del archivo .sqlproj de la carpeta bin/Debug.

Los metadatos de paquete también se pueden especificar mediante propiedades dentro del elemento <PropertyGroup> en el archivo .sqlproj. Por ejemplo, las siguientes propiedades especifican el identificador de paquete, la versión, la descripción, los autores y la empresa:

<PackageId>Contoso.AdventureWorks.SalesLT</PackageId>
<Version>1.0.0</Version>
<Description>AdventureWorks database SalesLT objects</Description>
<Authors>DevTeam</Authors>
<Company>Contoso Outdoors</Company>

El archivo .nupkg creado mediante el comando dotnet pack se puede publicar en un feed de NuGet para su uso en proyectos SQL. Cualquier persona con acceso al paquete puede ver estos objetos de base de datos, por lo que se debe tener en cuenta la selección de una ubicación de feed público o privado. Para obtener más información, consulte Hospedaje con feeds de paquetes privados.