다음을 통해 공유


SQL 프로젝트 시스템 객체들

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceMicrosoft Fabric의 SQL 데이터베이스

SQL 프로젝트는 프로젝트 빌드 프로세스 중에 데이터베이스 개체 참조의 유효성을 검사합니다. 기본적으로 SQL 프로젝트는 데이터베이스 모델에 시스템 개체를 포함하지 않으므로 프로젝트에 시스템 개체에 대한 참조가 포함된 경우 유효성 검사 오류가 발생할 수 있습니다. 이러한 유효성 검사 오류를 해결하려면 프로젝트의 대상 플랫폼에 master.dacpac 대한 데이터베이스 참조를 포함합니다.

데이터베이스 참조는 master.dacpac Microsoft.Build.Sql SDK 스타일 SQL 프로젝트의 패키지 참조 또는 SDK 스타일 및 원래 SQL 프로젝트 모두에서 아티팩트 참조 로 추가할 수 있습니다.

패키지 참조 추가

사용 가능한 시스템 데이터베이스 패키지는 다음과 같습니다.

SQL 프로젝트에 패키지 참조를 추가하는 가장 직접적인 방법은 .NET CLI(명령줄 인터페이스)를 사용하는 것입니다. 다음 예제에서는 Azure SQL Database master 시스템 데이터베이스에 패키지 참조를 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 결과 편집은 Visual Studio의 Azure SQL Database master 시스템 데이터베이스에 아티팩트 참조를 추가하는 다음 예제와 유사합니다.

<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 파일을 복사하고, 빌드 시스템에 시스템 데이터베이스 파일이 포함되지 않은 경우, 해당 위치를 가리키도록 IncludeHintPath 특성을 업데이트할 수 있습니다.

패브릭의 SQL 데이터베이스

패브릭 시스템 개체의 SQL 데이터베이스는 패키지에 Microsoft.SqlServer.Dacpacs.DbFabric 포함되지만 패브릭 환경의 SQL 데이터베이스에 대한 데이터베이스 참조를 올바르게 구성하려면 추가 단계가 필요할 수 있습니다.

패브릭의 통합 소스 제어를 사용하여 만든 SQL 프로젝트에는 패키지 참조 및 속성이 DatabaseVariableLiteralValue 로 설정됩니다 master. Fabric의 SQL 데이터베이스는 데이터베이스에 대한 액세스를 master 제공하지 않지만 사용자 데이터베이스에서 동일한 시스템 개체를 참조할 수 있으므로 이 속성이 필요합니다.

Visual Studio 또는 VS Code에서 새 SQL 프로젝트를 만드는 경우 패브릭 환경의 DatabaseVariableLiteralValue SQL 데이터베이스에 사용되는 데이터베이스 이름과 일치하도록 master 속성을 업데이트해야 합니다.

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