Compartir a través de


Objetos del sistema de proyectos SQL

Se aplica a:SQL ServerAzure SQL DatabaseInstancia administrada de Azure SQLBase de datos SQL en Microsoft Fabric

Los proyectos SQL validan las referencias de objetos de base de datos durante el proceso de compilación del proyecto. De forma predeterminada, los proyectos de SQL no incluyen objetos del sistema en el modelo de base de datos, lo que puede provocar errores de validación si el proyecto contiene referencias a objetos del sistema. Para resolver estos errores de validación, incluiría una referencia de base de datos al master.dacpac para la plataforma de destino de su proyecto.

La master.dacpac referencia de base de datos se puede agregar como una referencia de paquete en proyectos SQL de estilo SDK de Microsoft.Build.Sql o como referencia de artefacto en proyectos SQL originales y de estilo SDK.

Adición de una referencia de paquete

Los paquetes de base de datos del sistema disponibles son:

El método más directo para agregar una referencia de paquete a un proyecto SQL es usar la interfaz de la línea de comandos (CLI) de .NET. En el ejemplo siguiente se agrega una referencia de paquete a la base de datos del sistema de Azure SQL Database master a un proyecto de SQL:

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

Este comando agrega la siguiente entrada al archivo (la versión del .sqlproj paquete reflejará la versión más reciente disponible en el momento en que se ejecuta el comando):

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

Adición de una referencia de artefacto

Las interfaces de proyecto de SQL de VS Code y Visual Studio proporcionan un método para agregar una referencia de artefacto al master.dacpac archivo para la plataforma de destino del proyecto.

Las modificaciones resultantes en el .sqlproj archivo tendrán un aspecto similar al ejemplo siguiente, que agrega una referencia de artefacto a la base de datos del sistema de Azure SQL Database master en 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>

Se hace referencia a los archivos master.dacpac desde la ubicación de instalación de las aplicaciones, lo cual puede ser problemático para algunos sistemas de CI/CD. Puede copiar el master.dacpac archivo en una ubicación dentro de la solución y actualizar los Include atributos y HintPath para que apunten a esa ubicación si el sistema de compilación no incluye los archivos de base de datos del sistema.

Base de datos SQL en Fabric

La base de datos SQL en los objetos del sistema de Fabric se incluye en el paquete Microsoft.SqlServer.Dacpacs.DbFabric, pero puede ser necesario tomar medidas adicionales para configurar correctamente la referencia de la base de datos en el entorno de Fabric.

El proyecto SQL creado con el control de código fuente integrado en Fabric incluye la referencia del paquete y la DatabaseVariableLiteralValue propiedad establecida a master. Esta propiedad es necesaria porque la base de datos SQL de Fabric no proporciona acceso a la master base de datos, pero se puede hacer referencia a los mismos objetos del sistema en la base de datos de usuario.

Si crea un nuevo proyecto de SQL en Visual Studio o VS Code, debe actualizar la DatabaseVariableLiteralValue propiedad para master que coincida con el nombre de la base de datos que se usa en la base de datos SQL en el entorno de Fabric.

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