다음을 통해 공유


기존 SQL 프로젝트를 SDK 스타일 프로젝트로 변환

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

새 SDK 스타일 SQL 프로젝트를 만드는 것은 빠른 작업입니다. 그러나 기존 SQL 프로젝트가 있는 경우 새 기능을 활용하기 위해 SDK 스타일 SQL 프로젝트로 변환할 수 있습니다.

프로젝트를 변환한 후에는 다음과 같은 SDK 스타일 프로젝트의 새로운 기능을 사용할 수 있습니다.

  • 플랫폼 간 빌드 지원
  • 간소화된 프로젝트 파일 형식
  • 패키지 참조

변환을 신중하게 완료하려면 다음을 수행합니다.

  1. 기존 프로젝트 파일의 백업을 만듭니다.
  2. 비교를 위해 기존 프로젝트에서 .dacpac 파일을 빌드합니다.
  3. 프로젝트 파일을 SDK 스타일 프로젝트로 수정합니다.
  4. 비교를 위해 수정된 프로젝트에서 .dacpac 파일을 빌드합니다.
  5. .dacpac 파일이 같은지 확인합니다.

SDK 스타일 프로젝트는 Visual Studio의 SSDT(SQL Server Data Tools)에서 지원되지 않습니다. 변환된 후에는 다음 중 하나를 사용하여 프로젝트를 빌드하거나 편집해야 합니다.

  • 명령줄
  • Visual Studio Code의 SQL 데이터베이스 프로젝트 익스텐션
  • Azure Data Studio용 SQL 데이터베이스 프로젝트 익스텐션

필수 조건

1단계: 기존 프로젝트 파일의 백업 만들기

프로젝트를 변환하기 전에 기존 프로젝트 파일의 백업을 만듭니다. 이렇게 하면 필요한 경우 기존 프로젝트로 되돌릴 수 있습니다.

파일 탐색기에서 파일 확장 프로그램의 끝에 .sqlproj이(가) 추가된 상태로 변환 할 프로젝트의 .original 파일 복사본을 만듭니다. 예를 들어 MyProject.sqlprojMyProject.sqlproj.original이 됩니다.

2단계: 비교를 위해 기존 프로젝트에서 .dacpac 파일을 빌드합니다.

Visual Studio 2022에서 프로젝트를 엽니다. .sqlproj 파일은 기존 형식이므로 기존 SQL Server Data Tools에서 엽니다.

솔루션 탐색기 데이터베이스 노드를 마우스 오른쪽 단추로 클릭하고 빌드를 선택하여 Visual Studio에서 프로젝트를 빌드합니다.

원래 프로젝트에서 .dacpac 파일을 빌드하려면 Visual Studio에서 원래 SSDT(SQL Server Data Tools)를 사용해야 합니다. 원래 SQL Server Data Tools가 설치된 Visual Studio 2022에서 프로젝트 파일을 엽니다.

솔루션 탐색기 데이터베이스 노드를 마우스 오른쪽 단추로 클릭하고 빌드를 선택하여 Visual Studio에서 프로젝트를 빌드합니다.

VS Code 또는 Azure Data Studio에서 프로젝트 폴더를 엽니다. VS Code 또는 Azure Data Studio의 데이터베이스 프로젝트 보기에서 프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 빌드를 선택합니다.

dotnet build 명령을 사용하여 명령줄에서 SQL Database 프로젝트를 빌드할 수 있습니다.

dotnet build

# optionally specify the project file
dotnet build MyDatabaseProject.sqlproj

빌드 프로세스는 기본적으로 프로젝트의 .dacpac 폴더에 bin\Debug 파일을 만듭니다. 파일 탐색기를 사용하여 빌드 프로세스에서 만든 .dacpac을(를) 찾아 프로젝트 디렉터리 외부의 새 폴더에 original_project.dacpac(으)로 복사합니다. 비교를 위해 이 .dacpac 파일을 사용하여 나중에 변환의 유효성을 검사합니다.

3단계: 프로젝트 파일을 SDK 스타일 프로젝트로 업데이트합니다.

프로젝트 파일 수정은 텍스트 편집기에서 가장 잘 수행되는 수동 프로세스입니다. 텍스트 편집기에서 .sqlproj 파일을 열고 다음을 변경합니다:

필수: SDK 참조 추가

프로젝트 요소 내에 Microsoft.Build.Sql 및 Sdk의 최신 버전을 참조하는 https://www.nuget.org/packages/Microsoft.build.sql 항목을 추가합니다.

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0">
  <Sdk Name="Microsoft.Build.Sql" Version="0.2.0-preview" />
...

필수: 불필요한 빌드 대상 가져오기 제거

원래 SQL 프로젝트는 Import 문의 여러 빌드 대상 및 속성을 참조합니다. 고유하고 의도적인 변경 내용인 명시적으로 추가한 <Import/> 항목을 제외하고 <Import ...>(으)로 시작하는 줄을 제거합니다. .sqlproj에 있는 경우 제거할 예제입니다.

...
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<Import Condition="..." Project="...\Microsoft.Data.Tools.Schema.SqlTasks.targets"/>
<Import Condition="'$(SQLDBExtensionsRefPath)' != ''" Project="$(SQLDBExtensionsRefPath)\Microsoft.Data.Tools.Schema.SqlTasks.targets" />
<Import Condition="'$(SQLDBExtensionsRefPath)' == ''" Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets" />
...

필수: 속성 폴더 제거

원래 SQL 프로젝트에는 솔루션 탐색기의 프로젝트 속성에 대한 액세스를 나타내는 Properties 폴더에 대한 항목이 있습니다. 이 항목은 프로젝트 파일에서 제거해야 합니다.

.sqlproj에 있는 경우 제거할 예제입니다.

<ItemGroup>
  <Folder Include="Properties" />
</ItemGroup>

선택 사항: SSDT 참조 제거

기존 SSDT(SQL Server Data Tools)는 Visual Studio 설치를 검색하기 위해 프로젝트 파일에 추가 콘텐츠가 필요했습니다. 이러한 줄은 SDK 스타일 SQL 프로젝트에서 필요하지 않으며 제거할 수 있습니다.

  <PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">11.0</VisualStudioVersion>
    <!-- Default to the v11.0 targets path if the targets file for the current VS version is not found -->
    <SSDTExists Condition="Exists('$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets')">True</SSDTExists>
    <VisualStudioVersion Condition="'$(SSDTExists)' == ''">11.0</VisualStudioVersion>
  </PropertyGroup>

선택 사항: 기본 빌드 설정 제거

기존 SQL 프로젝트에는 릴리스 및 디버그 빌드 설정에 대한 두 개의 큰 블록이 포함되며, SDK 스타일 SQL 프로젝트에서는 이러한 옵션의 기본값을 SDK에서 알 수 있습니다. 빌드 설정에 대한 사용자 지정이 없는 경우 다음 블록을 제거하는 것이 좋습니다.

  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <OutputPath>bin\Release\</OutputPath>
    <BuildScriptName>$(MSBuildProjectName).sql</BuildScriptName>
    <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <DefineDebug>false</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <OutputPath>bin\Debug\</OutputPath>
    <BuildScriptName>$(MSBuildProjectName).sql</BuildScriptName>
    <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <DefineDebug>true</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>

4단계: 비교를 위해 수정된 프로젝트에서 .dacpac 파일 빌드

SQL 프로젝트는 Visual Studio 2022와 더 이상 호환되지 않습니다. 프로젝트를 빌드하거나 편집하려면 다음 중 하나를 사용해야 합니다.

  • 명령줄
  • Visual Studio Code의 SQL 데이터베이스 프로젝트 익스텐션
  • Azure Data Studio용 SQL 데이터베이스 프로젝트 익스텐션

프로젝트 파일은 이제 SDK 스타일 형식이지만 Visual Studio 2022에서 열려면 SQL Server Data Tools, SDK 스타일(미리 보기)이 설치되어 있어야 하며 프로젝트에 .sqlprojx 파일 확장명이 있어야 합니다. SQL Server Data Tools, SDK 스타일(미리 보기)이 설치된 Visual Studio 2022에서 프로젝트를 엽니다.

VS Code 또는 Azure Data Studio에서 프로젝트 폴더를 엽니다. VS Code 또는 Azure Data Studio의 데이터베이스 프로젝트 보기에서 프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 빌드를 선택합니다.

dotnet build 명령을 사용하여 명령줄에서 SQL Database 프로젝트를 빌드할 수 있습니다.

dotnet build

# optionally specify the project file
dotnet build MyDatabaseProject.sqlproj

빌드 프로세스는 기본적으로 프로젝트의 .dacpac 폴더에 bin\Debug 파일을 만듭니다. 파일 탐색기를 사용하여 빌드 프로세스에서 만든 .dacpac을(를) 찾아 프로젝트 디렉터리 외부의 새 폴더에 복사합니다. 비교를 위해 이 .dacpac 파일을 사용하여 나중에 변환의 유효성을 검사합니다.

5단계: .dacpac 파일이 동일한지 확인

변환에 성공했는지 확인하려면 원래 프로젝트와 수정된 프로젝트에서 만든 .dacpac 파일을 비교합니다. SQL 프로젝트의 스키마 비교 기능을 사용하면 데이터베이스 모델의 차이를 시각화할 수 있습니다.

Visual Studio, Visual Studio Code 또는 Azure Data Studio에서 스키마 비교 도구를 사용하여 .dacpac 파일을 비교할 수 있습니다. DacFx .NET 라이브러리를 기반으로 하는 커뮤니티 도구도 사용할 수 있습니다.

프로젝트를 로드하지 않고 Visual Studio를 시작합니다. 도구>SQL Server>새 스키마 비교로 이동합니다. 원본 .dacpac 파일을 원본으로 선택하고 수정된 .dacpac 파일을 대상으로 선택합니다. Visual Studio에서 스키마 비교를 사용하는 방법에 대한 자세한 내용은 스키마 비교를 사용하여 다른 데이터베이스 정의를 비교하는 방법을 참조하세요.

그래픽 스키마 비교는 Visual Studio의 SDK 스타일 SQL 프로젝트 미리 보기에서 아직 사용할 수 없습니다. Azure Data Studio를 사용하여 스키마를 비교합니다.

Visual Studio Code에서는 스키마 비교를 사용할 수 없습니다. Azure Data Studio 또는 Visual Studio를 사용하여 스키마를 비교합니다.

Azure Data Studio에서 SQL Server 스키마 비교 확장이 아직 설치되지 않은 경우 설치합니다. Ctrl/Cmd+Shift+P와(과) 명령 팔레트를 열고 Schema Compare을(를) 입력하여 명령 팔레트 에서 새 스키마 비교를 시작합니다.

원본 .dacpac 파일을 원본으로 선택하고 수정된 .dacpac 파일을 대상으로 선택합니다.

그래픽 스키마 비교는 Visual Studio 및 Azure Data Studio에서 사용할 수 있습니다.

스키마 비교를 실행하면 결과가 표시되지 않습니다. 차이점이 없다는 것은 원래 프로젝트와 수정된 프로젝트가 동일하여 .dacpac 파일에서 동일한 데이터베이스 모델을 생성한다는 것을 나타냅니다.

참고 항목

스키마 비교를 통한 .dacpac 파일 비교는 배포 전/후 스크립트, 리팩터로그 또는 기타 프로젝트 설정의 유효성을 검사하지 않습니다. 데이터베이스 모델의 유효성만 검사합니다. .dacpac을(를) .zip 보관으로 변환하고 콘텐츠를 수동으로 비교하면 보다 자세한 비교를 제공할 수 있습니다.