Поделиться через


Обзор ссылок на пакеты проектов SQL

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure базе данных SQL в Microsoft Fabric

Ссылки на пакеты в проектах SQL позволяют ссылаться на объекты базы данных из других проектов или пакетов NuGet. Объекты базы данных, добавленные в проект с помощью ссылок на пакеты, могут быть частью одной базы данных, другой базы данных на одном сервере или другой базой данных на другом сервере.

Примечание.

Ссылки на пакеты — это рекомендуемый метод для ссылки на объекты базы данных в новой разработке. Ссылки на пакеты NuGet поддерживаются только в проектах SQL в стиле ПАКЕТА SDK (предварительная версия).

Ссылки на пакеты объектов базы данных

Ссылки на пакеты — это один из нескольких методов добавления объектов базы данных в проект SQL в качестве ссылки на базу данных. Ссылки на пакеты могут содержать объекты для одной базы данных, другой базы данных на одном сервере или другую базу данных на другом сервере. Ссылки на пакеты можно использовать для разбиения базы данных на небольшие, более управляемые проекты, что может помочь сократить время, необходимое для создания проекта во время итеративной локальной разработки.

Снимок экрана: пример проекта SQL, ссылающегося на два пакета и один проект для ссылок на базы данных.

Пример и синтаксис файла проекта SQL

Ссылки на пакеты добавляются в проект SQL с помощью записей в .sqlproj файле, аналогичных проектам C#. Если ссылка на пакет находится в другой базе данных на одном сервере, <DatabaseSqlCmdVariable> элемент включается в ссылку на пакет. Если ссылка на пакет находится в другой базе данных на другом сервере, <ServerSqlCmdVariable> элемент также включается в ссылку на пакет. Ссылки на пакеты в ту же базу данных не включают <ServerSqlCmdVariable> или <DatabaseSqlCmdVariable> элементы.

В следующем примере содержится ссылка на пакет в качестве ссылки Contoso.AdventureWorks.SalesLT на базу данных для той же базы данных, где объекты в пакете становятся частью модели базы данных в проекте SQL:

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

Системные базы данных

Системные базы данных SQL (master, msdb) публикуются в NuGet.org в качестве ссылочных пакетов баз данных. Эти пакеты содержат схему системных баз данных и могут использоваться в качестве ссылок на пакеты в проектах SQL. Пакеты системной базы данных версии соответствуют версии SQL Server, с которыми они связаны. Например, master пакет системной базы данных для SQL Server 2022 является Microsoft.SqlServer.Dacpacs.Master версией 160.2.1 и может быть добавлен в проект SQL в качестве ссылки на пакет:

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

Незначительные изменения версий отражают исправления ошибок и незначительные изменения схемы в версии SQL Server.

Доступные пакеты системной базы данных:

Пакеты dacpac NuGet

Пакет ссылки на базу данных — это пакет NuGet, содержащий .dacpac файл. Пакет NuGet можно опубликовать в веб-канале NuGet, например Azure Artifacts, для использования в проектах SQL. Создание этого пакета следует тому же процессу, что и создание пакета NuGet для других типов проектов. Дополнительные сведения см. в статье "Создание пакета с помощью dotnet CLI".

Снимок экрана: сводка ссылки на пакет для процессов проектов SQL.

Чтобы упаковать .sqlproj файл в виде пакета NuGet, используйте dotnet pack команду из командной строки. По умолчанию dotnet pack команда создает пакет NuGet из .sqlproj файла в папке bin/Debug .

Метаданные пакета можно указать свойствами внутри <PropertyGroup> элемента в .sqlproj файле. Например, следующие свойства указывают идентификатор пакета, версию, описание, авторов и компанию:

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

.nupkg Файл, созданный dotnet pack командой, можно опубликовать в веб-канале NuGet для использования в проектах SQL. Эти объекты базы данных могут просматриваться всеми пользователями с доступом к пакету, поэтому следует учитывать, чтобы выбрать общедоступное или частное расположение веб-канала. Дополнительные сведения см. в разделе "Размещение с частными веб-каналами пакетов".