Partilhar via


Objetos do sistema de projetos SQL

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase de dados SQL no Microsoft Fabric

Os projetos SQL validam referências de objeto de banco de dados durante o processo de compilação do projeto. Por padrão, os projetos SQL não incluem objetos do sistema no modelo de banco de dados, o que pode levar a erros de validação se o projeto contiver referências a objetos do sistema. Para resolver esses erros de validação, você deve incluir uma referência de banco de dados para a master.dacpac plataforma de destino do seu projeto.

A referência de banco de dados master.dacpac pode ser adicionada como uma referência de pacote em projetos SQL no estilo SDK Microsoft.Build.Sql ou como uma referência de artefato em projetos SQL no estilo original e no estilo SDK.

Adicionar uma referência de pacote

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

O método mais direto para adicionar uma referência de pacote a um projeto SQL é usar a interface de linha de comando (CLI) do .NET. O exemplo a seguir adiciona uma referência de pacote ao banco de dados do sistema do Banco de Dados SQL master do Azure a um projeto SQL:

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

Este comando adiciona a seguinte entrada ao .sqlproj arquivo (a versão do pacote refletirá a versão mais recente disponível no momento em que o comando for executado):

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

Adicionar uma referência de artefato

As interfaces de projeto VS Code e Visual Studio SQL fornecem um método para adicionar uma referência de artefato ao master.dacpac arquivo para a plataforma de destino do seu projeto.

As edições resultantes no .sqlproj arquivo serão semelhantes ao exemplo a seguir, que adiciona uma referência de artefato ao banco de dados de sistema do Azure SQL Database dentro do ambiente do 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>

Os master.dacpac arquivos são referenciados a partir do local de instalação dos aplicativos, que pode ser frágil para alguns sistemas CI / CD. Você pode copiar o arquivo master.dacpac para um local dentro da sua solução e atualizar os atributos Include e HintPath para apontar para esse local se o sistema de compilação não incluir os arquivos de banco de dados do sistema.

Banco de dados SQL no Fabric

O banco de dados SQL nos objetos do sistema Fabric está incluído no Microsoft.SqlServer.Dacpacs.DbFabric pacote, mas etapas adicionais podem ser necessárias para configurar a referência de banco de dados corretamente para o banco de dados SQL no ambiente Fabric.

O projeto SQL criado com o controle de origem integrado no Fabric inclui a referência do pacote e a DatabaseVariableLiteralValue propriedade definida como master. Essa propriedade é necessária porque o banco de dados SQL no Fabric não fornece acesso ao banco de dados, master mas os mesmos objetos do sistema podem ser referenciados no banco de dados do usuário.

Se você criar um novo projeto SQL no Visual Studio ou VS Code, deverá atualizar a DatabaseVariableLiteralValue propriedade para master corresponder ao nome do banco de dados usado no banco de dados SQL no ambiente Fabric.

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