Partager via


Objets système des projets SQL

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase de données SQL dans Microsoft Fabric

Les projets SQL valident les références d’objets de base de données pendant le processus de génération du projet. Par défaut, les projets SQL n’incluent pas d’objets système dans le modèle de base de données, ce qui peut entraîner des erreurs de validation si votre projet contient des références à des objets système. Pour résoudre ces erreurs de validation, vous devez inclure une référence de base de données à la master.dacpac plateforme cible de votre projet.

La master.dacpac référence de base de données peut être ajoutée en tant que référence de package dans les projets SQL de style SDK Microsoft.Build.Sql ou en tant que référence d’artefact dans les projets SQL d’origine et de style SDK.

Ajouter une référence de package

Les packages de base de données système disponibles sont les suivants :

La méthode la plus directe pour ajouter une référence de package à un projet SQL consiste à utiliser l’interface de ligne de commande .NET (CLI). L’exemple suivant ajoute une référence de package à la base de données système Azure SQL Database master à un projet SQL :

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

Cette commande ajoute l’entrée suivante au fichier (la version du .sqlproj package reflète la dernière version disponible au moment de l’exécution de la commande) :

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

Ajouter une référence d’artefact

Les interfaces de projet VS Code et Visual Studio SQL fournissent une méthode permettant d’ajouter une référence d’artefact au master.dacpac fichier pour la plateforme cible de votre projet.

Les modifications obtenues dans le .sqlproj fichier ressemblent à l’exemple suivant, ce qui ajoute une référence d’artefact à la base de données système Azure SQL Database master dans 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>

Les master.dacpac fichiers sont référencés à partir de l’emplacement d’installation des applications, ce qui peut être fragile pour certains systèmes CI/CD. Vous pouvez copier le fichier master.dacpac à un emplacement dans votre solution et mettre à jour les attributs Include et HintPath pour les faire pointer vers cet emplacement si votre système de compilation n’inclut pas les fichiers de base de données système.

Base de données SQL dans Fabric

La base de données SQL dans les objets système Fabric est incluse dans le Microsoft.SqlServer.Dacpacs.DbFabric package, mais des étapes supplémentaires peuvent être nécessaires pour configurer la référence de base de données correctement pour la base de données SQL dans l’environnement Fabric.

Le projet SQL créé avec le contrôle de code source intégré dans Fabric inclut la référence du package et la DatabaseVariableLiteralValue propriété définie sur master. Cette propriété est requise, car la base de données SQL dans Fabric ne fournit pas d’accès à la master base de données, mais les mêmes objets système peuvent être référencés dans la base de données utilisateur.

Si vous créez un projet SQL dans Visual Studio ou VS Code, vous devez mettre à jour la DatabaseVariableLiteralValue propriété pour master qu’elle corresponde au nom de la base de données utilisée dans la base de données SQL dans l’environnement Fabric.

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