적용 대상:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Microsoft Fabric의 SQL 데이터베이스
SQL 프로젝트의 패키지 참조를 사용하면 다른 프로젝트 또는 NuGet 패키지의 데이터베이스 개체를 참조할 수 있습니다. 패키지 참조를 통해 프로젝트에 추가된 데이터베이스 개체는 동일한 데이터베이스, 동일한 서버의 다른 데이터베이스 또는 다른 서버의 다른 데이터베이스에 속할 수 있습니다.
참고
패키지 참조는 새 개발에서 데이터베이스 개체를 참조하는 데 권장되는 방법입니다. NuGet 패키지 참조는 SDK 스타일 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>
다음 예제에서는 패키지의 Contoso.AdventureWorks
개체가 SQL 프로젝트의 데이터베이스 모델의 일부가 되는 동일한 서버의 다른 데이터베이스(AdventureWorks)에 대한 데이터베이스 참조로 패키지에 대한 패키지 참조를 포함합니다.
...
<ItemGroup>
<PackageReference Include="Contoso.AdventureWorks" Version="1.1.0">
<DatabaseSqlCmdVariable>AdventureDB</DatabaseSqlCmdVariable>
<DacpacName>AdventureWorks</DacpacName>
</PackageReference>
</ItemGroup>
<ItemGroup>
<SqlCmdVariable Include="AdventureDB">
<DefaultValue>AdventureWorks</DefaultValue>
<Value>$(SqlCmdVar__1)</Value>
</SqlCmdVariable>
</ItemGroup>
</Project>
이 예제에서 AdventureWorks .dacpac
파일은 NuGet 피드에 패키지 Contoso.AdventureWorks
버전 1.1.0
으로 게시됩니다. 요소는 <DatabaseSqlCmdVariable>
패키지의 개체가 있는 동일한 서버에 있는 데이터베이스의 이름을 지정하며 세 부분으로 구성된 명명에서 이 참조를 나타내는 데 사용됩니다.
SQLCMD 변수AdventureDB
는 배포 시 데이터베이스 이름을 설정하는 데 사용되며 이 예제 쿼리와 유사하게 프로젝트에서 사용됩니다.
SELECT * FROM [$(AdventureDB)].dbo.Customers;
요소는 <DacpacName>
파일 확장명 또는 경로 없이 패키지 참조에 대한 파일의 이름을 .dacpac
지정합니다. 요소는 <DacpacName>
선택 사항이며 파일 이름이 .dacpac
패키지 이름과 다른 경우에만 필요합니다.
시스템 데이터베이스
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 버전 내의 스키마에 대한 버그 수정 및 사소한 변경 내용을 반영합니다.
사용 가능한 시스템 데이터베이스 패키지는 다음과 같습니다.
-
SQL Server
master
시스템 데이터베이스 -
SQL Server
msdb
시스템 데이터베이스 -
Azure SQL Database
master
시스템 데이터베이스 -
Azure Synapse Analytics
master
시스템 데이터베이스 -
Azure Synapse Analytics 시스템 데이터베이스의 서버리스 풀
master
패키지 dacpac NuGet 패키지
데이터베이스 참조 패키지는 .dacpac
파일이 포함된 NuGet 패키지입니다. NuGet 패키지는 SQL 프로젝트에서 사용하기 위해 Azure Artifacts와 같은 NuGet 피드에 게시할 수 있습니다. 이 패키지를 만드는 작업은 다른 유형의 프로젝트에 대한 NuGet 패키지를 만드는 것과 동일한 프로세스를 따릅니다. 자세한 내용은 dotnet CLI를 사용하여 패키지 만들기를 참조하세요.
.sqlproj
파일을 NuGet 패키지로 패키징하려면 명령줄의 dotnet pack
명령을 사용합니다. 기본적으로 dotnet pack
명령은 .sqlproj
폴더의 bin/Debug
파일에서 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 피드에 게시할 수 있습니다. 이러한 데이터베이스 개체는 패키지에 액세스할 수 있는 모든 사용자가 볼 수 있으므로 퍼블릭 또는 프라이빗 피드 위치를 선택하기 위해 고려해야 합니다. 자세한 내용은 프라이빗 패키지 피드를 사용하여 호스팅을 참조하세요.
패키지에서 PackageId
이(가) .dacpac
파일 이름과 다를 때, 패키지를 사용할 때 패키지 참조에는 <DacpacName>
요소가 필요합니다.
확장 코드 분석 규칙 패키지 참조
패키지 참조를 사용하여 코드 분석 확장성의 일부로 개발된 더 많은 코드 분석 규칙을 참조할 수도 있습니다. 코드 분석 규칙 패키지에 대한 패키지 참조는 데이터베이스 개체 패키지에 대한 패키지 참조와 유사합니다. 다음 예제에서는 사용자 지정 코드 분석 규칙 패키지에 대한 패키지 참조를 보여 줍니다.
<ItemGroup>
<PackageReference Include="Your.CustomCode.AnalysisRules" Version="1.2.3" />
</ItemGroup>
참조되는 패키지는 NuGet.org, Azure Artifacts 또는 로컬 원본과 같은 NuGet 피드에서 사용할 수 있어야 합니다. 코드 분석 규칙이 포함된 패키지를 참조하면 규칙이 SQL 프로젝트에 자동으로 포함되고 프로젝트 속성 RunSqlCodeAnalysis
이 true로 설정되면 평가됩니다. 프로젝트 속성에서 오류를 개별적으로 반환하기 위해 규칙을 사용하지 않도록 설정하거나 승격할 수 있습니다.