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


Системные объекты проектов SQL

Применимо к:SQL ServerБаза данных SQL AzureУправляемый экземпляр SQL AzureБаза данных SQL в Microsoft Fabric

Проекты SQL проверяют ссылки на объекты базы данных во время процесса сборки проекта. По умолчанию проекты SQL не включают системные объекты в модель базы данных, что может привести к ошибкам проверки, если проект содержит ссылки на системные объекты. Чтобы устранить эти ошибки проверки, необходимо включить ссылку master.dacpac на базу данных для целевой платформы проекта.

Ссылка master.dacpac на базу данных может быть добавлена в качестве ссылки на пакет в проектах SQL в стиле пакета Microsoft.Build.Sql или в качестве ссылки на артефакты как в стиле SDK, так и в исходных проектах SQL.

Добавление ссылки на пакет

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

Самый прямой способ добавления ссылки на пакет в проект SQL — использовать интерфейс командной строки .NET (CLI). В следующем примере в проект SQL добавляется ссылка на пакетную библиотеку в системную базу данных Azure SQL:

dotnet add <path-to-sqlproj> package Microsoft.SqlServer.Dacpacs.Azure.Master

Эта команда добавляет следующую запись .sqlproj в файл (версия пакета будет отражать последнюю версию, доступную во время выполнения команды):

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

Добавление ссылки на артефакт

Интерфейсы проекта VS Code и Visual Studio SQL предоставляют метод добавления ссылки на артефакт в master.dacpac файл для целевой платформы проекта.

Изменения в файле .sqlproj будут выглядеть примерно как в следующем примере, добавляющем ссылку на артефакт в системную базу данных SQL Azure в Visual Studio.

<ItemGroup>
    <ArtifactReference Include="$(DacPacRootPath)\Extensions\Microsoft\SQLDB\Extensions\SqlServer\AzureV12\SqlSchemas\master.dacpac">
      <HintPath>$(DacPacRootPath)\Extensions\Microsoft\SQLDB\Extensions\SqlServer\AzureV12\SqlSchemas\master.dacpac</HintPath>
      <SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
      <DatabaseVariableLiteralValue>master</DatabaseVariableLiteralValue>
    </ArtifactReference>
  </ItemGroup>

Файлы master.dacpac ссылаются на место установки приложений, что может быть ненадежным для некоторых систем CI/CD. Файл master.dacpac можно скопировать в локальное расположение в вашем решении и обновить атрибуты Include и HintPath, чтобы указать на это расположение, если ваша система сборки не включает файлы системной базы данных.

База данных SQL в Fabric

База данных SQL в системных объектах Fabric включается в Microsoft.SqlServer.Dacpacs.DbFabric пакет, но для правильной настройки ссылки на базу данных SQL в среде Fabric могут потребоваться дополнительные действия.

Проект SQL, созданный с помощью интегрированной системы управления версиями в Fabric, включает ссылку на пакет и свойство DatabaseVariableLiteralValue, установленное в master. Это свойство необходимо, так как база данных SQL в Fabric не предоставляет доступ к master базе данных, но на те же системные объекты можно ссылаться в пользовательской базе данных.

При создании проекта SQL в Visual Studio или VS Code необходимо обновить DatabaseVariableLiteralValue свойство, чтобы master оно соответствовало имени базы данных, используемому в базе данных SQL в среде Fabric.

  <ItemGroup>
    <PackageReference Include="Microsoft.SqlServer.Dacpacs.DbFabric">
      <SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
      <DatabaseVariableLiteralValue>master</DatabaseVariableLiteralValue>
      <Version>170.0.0</Version>
    </PackageReference>
  </ItemGroup>