다음을 통해 공유


SQL 프로젝트 패키지 참조 개요

적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance

SQL 프로젝트의 패키지 참조를 사용하면 다른 프로젝트 또는 NuGet 패키지의 데이터베이스 개체를 참조할 수 있습니다. 패키지 참조를 통해 프로젝트에 추가된 데이터베이스 개체는 동일한 데이터베이스, 동일한 서버의 다른 데이터베이스 또는 다른 서버의 다른 데이터베이스에 속할 수 있습니다.

참고 항목

패키지 참조는 새 개발에서 데이터베이스 개체를 참조하는 데 권장되는 방법입니다. NuGet 패키지 참조는 SDK 스타일 SQL 프로젝트(미리 보기)에서만 지원됩니다.

데이터베이스 개체 패키지 참조

패키지 참조는 데이터베이스 참조로 SQL 프로젝트에 데이터베이스 개체를 추가하는 몇 가지 방법 중 하나입니다. 패키지 참조는 동일한 데이터베이스, 동일한 서버의 다른 데이터베이스 또는 다른 서버의 다른 데이터베이스에 대한 개체를 포함할 수 있습니다. 패키지 참조를 사용하여 데이터베이스를 더 작고 관리하기 쉬운 프로젝트로 분할할 수 있으므로 반복적인 로컬 개발 중에 프로젝트를 빌드하는 데 필요한 시간을 줄일 수 있습니다.

데이터베이스 참조에 대해 두 개의 패키지와 하나의 프로젝트를 참조하는 SQL 프로젝트의 예제 스크린샷

SQL 프로젝트 파일 샘플 및 구문

패키지 참조는 C# 프로젝트와 유사하게 .sqlproj 파일의 항목을 통해 SQL 프로젝트에 추가됩니다. 패키지 참조가 동일한 서버의 다른 데이터베이스에 대한 경우 <DatabaseSqlCmdVariable> 요소가 패키지 참조에 포함됩니다. 패키지 참조가 다른 서버의 다른 데이터베이스에 대한 경우 <ServerSqlCmdVariable> 요소도 패키지 참조에 포함됩니다. 동일한 데이터베이스에 대한 패키지 참조에는 <ServerSqlCmdVariable> 또는 <DatabaseSqlCmdVariable> 요소가 포함되지 않습니다.

다음 예제에서는 패키지의 개체가 SQL 프로젝트의 데이터베이스 모델의 일부가 되는 동일한 데이터베이스에 대한 데이터베이스 참조로 Contoso.AdventureWorks.SalesLT 패키지에 대한 패키지 참조를 포함합니다.

...
  <ItemGroup>
    <PackageReference Include="Contoso.AdventureWorks.SalesLT" Version="1.1.0" />
  </ItemGroup>
</Project>

시스템 데이터베이스

SQL 시스템 데이터베이스(master, msdb)는 NuGet.org 데이터베이스 참조 패키지로 게시됩니다. 이러한 패키지는 시스템 데이터베이스에 대한 스키마를 포함하며 SQL 프로젝트에서 패키지 참조로 사용할 수 있습니다. 시스템 데이터베이스 패키지는 연결된 SQL Server 버전에 맞게 버전이 지정됩니다. 예를 들어 SQL Server 2022용 master 시스템 데이터베이스 패키지는 Microsoft.SqlServer.Dacpacs.Master 버전 160.2.1이며 패키지 참조로 SQL 프로젝트에 추가할 수 있습니다.

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

부 버전 변경은 SQL Server 버전 내의 스키마에 대한 버그 수정 및 사소한 변경 내용을 반영합니다.

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

패키지 dacpac NuGet 패키지

데이터베이스 참조 패키지는 .dacpac 파일이 포함된 NuGet 패키지입니다. NuGet 패키지는 SQL 프로젝트에서 사용하기 위해 Azure Artifacts와 같은 NuGet 피드에 게시할 수 있습니다. 이 패키지를 만드는 작업은 다른 유형의 프로젝트에 대한 NuGet 패키지를 만드는 것과 동일한 프로세스를 따릅니다. 자세한 내용은 dotnet CLI를 사용하여 패키지 만들기를 참조하세요.

SQL 프로젝트 프로세스에 대한 패키지 참조 요약의 스크린샷.

.sqlproj 파일을 NuGet 패키지로 패키징하려면 명령줄의 dotnet pack 명령을 사용합니다. 기본적으로 dotnet pack 명령은 bin/Debug 폴더의 .sqlproj 파일에서 NuGet 패키지를 만듭니다.

패키지 메타데이터는 <PropertyGroup> 파일의 .sqlproj 요소 내 속성으로 지정할 수 있습니다. 예를 들어 다음 속성은 패키지 ID, 버전, 설명, 작성자 및 회사를 지정합니다.

<PackageId>Contoso.AdventureWorks.SalesLT</PackageId>
<Version>1.0.0</Version>
<Description>AdventureWorks database SalesLT objects</Description>
<Authors>DevTeam</Authors>
<Company>Contoso Outdoors</Company>

.nupkg 명령으로 만든 dotnet pack 파일을 SQL 프로젝트에서 사용하기 위해 NuGet 피드에 게시할 수 있습니다. 이 데이터베이스 개체는 패키지에 액세스할 수 있는 모든 사용자가 볼 수 있으므로 퍼블릭 또는 프라이빗 피드 중 어떤 위치를 선택할지 고려해야 합니다. 자세한 내용은 프라이빗 패키지 피드를 사용하여 호스팅을 참조하세요.