Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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.
Note
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.
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>
O exemplo a seguir inclui uma referência de pacote ao Contoso.AdventureWorks pacote como uma referência de banco de dados para um banco de dados diferente (AdventureWorks) no mesmo servidor em que os objetos no pacote se tornam parte do modelo de banco de dados no projeto SQL:
...
<ItemGroup>
<PackageReference Include="Contoso.AdventureWorks" Version="1.1.0">
<DatabaseSqlCmdVariable>AdventureDB</DatabaseSqlCmdVariable>
<DacpacName>AdventureWorks</DacpacName>
</PackageReference>
</ItemGroup>
<ItemGroup>
<SqlCmdVariable Include="AdventureDB">
<DefaultValue>AdventureWorks</DefaultValue>
<Value>$(SqlCmdVar__1)</Value>
</SqlCmdVariable>
</ItemGroup>
</Project>
Neste exemplo, o arquivo AdventureWorks .dacpac é publicado como uma versão Contoso.AdventureWorks do pacote 1.1.0 em um feed do NuGet. O <DatabaseSqlCmdVariable> elemento especifica o nome do banco de dados no mesmo servidor em que os objetos no pacote estão localizados e seria usado para indicar essa referência na nomenclatura de três partes. A variável AdventureDB é usada para definir o nome do banco de dados no momento da implantação e é usada no projeto de forma semelhante a esta consulta de exemplo:
SELECT * FROM [$(AdventureDB)].dbo.Customers;
O <DacpacName> elemento especifica o nome do .dacpac arquivo para a referência do pacote, sem a extensão ou o caminho do arquivo. O <DacpacName> elemento é opcional e só é necessário quando o nome do .dacpac arquivo é diferente do nome do pacote.
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
masterdo SQL Server -
Banco de dados do sistema
msdbdo SQL Server -
Banco de dados de sistema do Azure SQL Database
master - Banco de dados SQL em objetos do sistema Fabric
-
Banco de dados do sistema
masterdo Azure Synapse Analytics -
Banco de dados do sistema
masterde pools sem servidor do Azure Synapse Analytics
Empacotar pacotes NuGet com dacpacs
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 exibidos 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, confira Hospedagem com feeds de pacotes privados.
Ao referenciar um pacote em que o PackageId é diferente do nome do arquivo .dacpac, o elemento <DacpacName> é necessário na referência do pacote ao consumi-lo.
Referências de pacote de regras de análise de código estendido
As referências de pacote também podem ser usadas para fazer referência a mais regras de análise de código que foram desenvolvidas como parte da extensibilidade de análise de código. A referência de pacote para um pacote de regra de análise de código é semelhante à referência de pacote para um pacote de objeto de banco de dados. O exemplo a seguir mostra uma referência de pacote a um pacote de regras de análise de código personalizado:
<ItemGroup>
<PackageReference Include="Your.CustomCode.AnalysisRules" Version="1.2.3" />
</ItemGroup>
O pacote referenciado deve estar disponível em um feed do NuGet, como NuGet.org, Azure Artifacts ou uma fonte local. Quando um pacote que contém regras de análise de código é referenciado, as regras são incluídas automaticamente no projeto SQL e são avaliadas quando a propriedade RunSqlCodeAnalysis do projeto é definida como true. As regras podem ser desabilitadas ou elevadas para retornar um erro individualmente nas propriedades do projeto.