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 Banco de dados SQL no Microsoft Fabric
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.
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:
- Banco de dados do sistema
master
do SQL Server - Banco de dados do sistema
msdb
do SQL Server - Banco de dados do sistema
master
do Banco de Dados SQL do Azure - Banco de dados do sistema
master
do Azure Synapse Analytics - Banco de dados do sistema
master
de pools sem servidor do Azure Synapse Analytics
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.
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.