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.
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:
- Base de datos del sistema
master
de SQL Server - Base de datos del sistema
msdb
de SQL Server - Base de datos del sistema
master
de Azure SQL Database - Base de datos del sistema
master
de Azure Synapse Analytics - Base de datos del sistema
master
de grupos sin servidor de Azure Synapse Analytics
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.
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.