Visão geral das referências de pacotes de projetos SQL

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure

As referências de pacote em projetos SQL permitem que você faça referência a objetos de banco de dados de outros projetos ou pacotes NuGet. Os objetos de banco de dados adicionados a um projeto por meio de referências de pacote podem fazer parte do mesmo banco de dados, de um banco de dados diferente no mesmo servidor ou de um banco de dados diferente em um servidor diferente.

Observação

As referências de pacote são o método recomendado para referenciar objetos de banco de dados em novos desenvolvimentos. A referência a pacotes NuGet só tem suporte em projetos SQL no estilo SDK (versão prévia).

Referências a um pacote de objeto de banco de dados

As referências de pacote são um dos vários métodos para adicionar objetos de banco de dados a um projeto SQL como uma referência de banco de dados. As referências de pacote podem conter objetos para o mesmo banco de dados, um banco de dados diferente no mesmo servidor ou um banco de dados diferente em um servidor diferente. As referências de pacote podem ser usadas para dividir um banco de dados em projetos menores e mais gerenciáveis, o que pode ajudar a reduzir o tempo necessário para criar um projeto durante o desenvolvimento local iterativo.

Captura de tela de exemplo de um projeto SQL referenciando dois pacotes e um projeto para referências de banco de dados.

Exemplo e sintaxe do arquivo de projeto SQL

As referências de pacote são adicionadas a um projeto SQL por meio de entradas no arquivo .sqlproj, semelhantes aos projetos C#. Quando uma referência de pacote é para um banco de dados diferente no mesmo servidor, um elemento <DatabaseSqlCmdVariable> é incluído na referência do pacote. Quando uma referência de pacote é para um banco de dados diferente em um servidor diferente, um elemento <ServerSqlCmdVariable> também é incluído na referência do pacote. As referências de pacotes para o mesmo banco de dados não incluem elementos <ServerSqlCmdVariable> ou <DatabaseSqlCmdVariable>.

O exemplo a seguir inclui uma referência de pacote ao pacote Contoso.AdventureWorks.SalesLT como uma referência de banco de dados para o mesmo banco de dados em que os objetos no pacote se tornam parte do modelo de banco de dados no projeto SQL:

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

Bancos de dados do sistema

Os bancos de dados do sistema SQL (master, msdb) são publicados no NuGet.org como pacotes de referência de banco de dados. Esses pacotes contêm o esquema para os bancos de dados do sistema e podem ser usados como referências de pacote em projetos SQL. Os pacotes de banco de dados do sistema têm controle de versão para se alinharem com a versão do SQL Server à qual estão associados. Por exemplo, o pacote de banco de dados do sistema master para SQL Server 2022 é Microsoft.SqlServer.Dacpacs.Master versão 160.2.1 e pode ser adicionado a um projeto SQL como uma referência de pacote:

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

As alterações de versões secundárias refletem correções de bugs e pequenas alterações no esquema em uma versão do SQL Server.

Os pacotes disponíveis dos bancos de dados do sistema são:

Pacote dacpac Pacotes NuGet

Um pacote de referência de banco de dados é um pacote NuGet que contém um arquivo .dacpac. O pacote NuGet pode ser publicado em um feed NuGet, como Azure Artifacts, para uso em projetos SQL. A criação desse pacote segue o mesmo processo que a criação de um pacote NuGet para outros tipos de projetos. Para obter mais informações, confira Criando um pacote com a CLI do dotnet.

Captura de tela do Resumo da referência de pacote para o processo de projetos SQL.

Para encapsular um arquivo .sqlproj como um pacote NuGet, use o comando dotnet pack da linha de comando. Por padrão, o comando dotnet pack cria um pacote NuGet do arquivo .sqlproj na pasta bin/Debug.

Os metadados do pacote podem ser especificados pelas propriedades dentro do elemento <PropertyGroup> no arquivo .sqlproj. Por exemplo, as seguintes propriedades especificam a ID do pacote, a versão, a descrição, os autores e a empresa:

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

O arquivo .nupkg criado pelo comando dotnet pack pode ser publicado em um feed NuGet para uso em projetos SQL. Esses objetos de banco de dados podem ser visualizados por qualquer pessoa com acesso ao pacote, portanto, deve-se considerar a seleção de um local de feed público ou privado. Para obter mais informações, consulte Hospedagem com feeds de pacotes privados.