다음을 통해 공유


자습서: 기존 데이터베이스에서 시작

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

SQL 프로젝트에는 테이블, 뷰 및 저장 프로시저와 같은 데이터베이스의 모든 개체에 대한 선언적(CREATE 문) 파일이 포함되어 있습니다. 이러한 파일을 사용하여 새 데이터베이스를 만들거나, 기존 데이터베이스를 업데이트하거나, 원본 제어에서 데이터베이스를 추적할 수 있습니다. 기존 데이터베이스가 있고 최소한의 노력으로 데이터베이스와 일치하는 개체를 SQL 프로젝트에 만들려는 경우 SQL 프로젝트로 시작하는 경우가 많습니다.

일부 SQL 프로젝트 도구에는 기존 데이터베이스에서 새 SQL 프로젝트를 만들기 위한 단일 단계가 포함되어 있습니다. 다른 도구에는 새 SQL 프로젝트를 만든 다음 기존 데이터베이스에서 개체를 가져오는 몇 가지 단계가 필요합니다. 이 가이드에서는 Visual Studio(SQL Server Data Tools) 지침을 제외하고 SDK 스타일 SQL 프로젝트에 중점을 둡니다.

이 자습서의 옵션 1에서는 다음을 수행합니다.

  • 1단계: 기존 데이터베이스에서 새 SQL 프로젝트 만들기
  • 2단계: SQL 프로젝트 빌드

이 자습서의 옵션 2에서는 다음을 수행합니다.

  • 1단계: 비어 있는 새 SQL 프로젝트 만들기
  • 2단계: 기존 데이터베이스에서 개체 가져오기
  • 3단계: SQL 프로젝트 빌드

Prerequisites

# install SqlPackage CLI
dotnet tool install -g Microsoft.SqlPackage

# install Microsoft.Build.Sql.Templates
dotnet new install Microsoft.Build.Sql.Templates

Note

자습서를 완료하려면 Azure SQL 또는 SQL Server 인스턴스에 액세스해야 합니다. Windows SQL Server 개발자 에디션 또는 컨테이너 사용하여 로컬에서 무료로 개발할 수 있습니다.

옵션 1: 기존 데이터베이스에서 새 SQL 프로젝트 만들기

1단계: 기존 데이터베이스에서 새 SQL 프로젝트 만들기

Visual Studio의 SQL Server 개체 탐색기에서 프로젝트를 만들려는 데이터베이스를 마우스 오른쪽 버튼으로 클릭하고 새 프로젝트 만들기...를 선택합니다.

Visual Studio에서 데이터베이스 가져오기 대화 상자의 스크린샷입니다.

새로 만들기 Project 대화 상자에서 project 이름을 입력합니다. 프로젝트 이름은 데이터베이스 이름과 일치할 필요가 없습니다. 필요에 따라 프로젝트 위치를 확인하고 수정합니다. 기본 가져오기 설정은 스키마를 사용하여 개체를 폴더로 가져온 다음 개체 형식을 가져옵니다. 가져오기 설정을 수정하여 폴더 구조를 변경하거나 가져오는 개체에 사용 권한을 포함할 수 있습니다. 가져오기 시작

데이터베이스 가져오기 대화 상자에 가져오기 진행률이 메시지로 표시됩니다. 가져오기가 완료되면 솔루션 탐색기 가져온 개체를 볼 수 있습니다. 프로세스는 아래의 프로젝트 디렉터리에 있는 파일에 로그를 저장합니다 Import Schema Logs. 완료를 선택합니다.

옵션 1은 Visual Studio SDK 스타일 SQL 프로젝트에 사용할 수 없습니다. 대신 옵션 2를 사용합니다.

Visual Studio Code 데이터베이스 개체 탐색기 보기에서 프로젝트를 만들 데이터베이스를 선택합니다. 데이터베이스를 마우스 오른쪽 단추로 클릭하고 데이터베이스에서 Project 만들기 선택합니다.

Visual Studio Code의 데이터베이스에서 프로젝트 만들기 대화 상자의 스크린샷.

Visual Studio Code 데이터베이스에서 프로젝트 만들기 대화 상자에는 프로젝트 이름과 위치가 필요합니다. 기본 가져오기 설정은 스키마를 사용하여 개체를 폴더로 가져온 다음 개체 형식을 가져옵니다. 다른 폴더 구조를 선택하거나 만들기를 선택하기 전에 가져올 개체에 사용 권한을 포함하도록 선택할 수 있습니다.

데이터베이스 프로젝트 보기를 열어 새 프로젝트 및 가져온 개체 정의를 확인합니다.

옵션 1은 SQL Server Management Studio 사용할 수 없습니다. 대신 옵션 2를 사용합니다.

명령줄에는 옵션 1을 사용할 수 없습니다. 대신 옵션 2를 사용합니다.

2단계: SQL 프로젝트 빌드

빌드 프로세스는 프로젝트 파일에 지정된 대상 플랫폼에 대한 개체와 구문 간의 관계의 유효성을 검사합니다. 빌드 프로세스의 아티팩트 .dacpac 출력은 대상 데이터베이스에 프로젝트를 배포하는 데 사용할 수 있는 파일입니다. 이 파일에는 데이터베이스 스키마의 컴파일된 모델이 포함되어 있습니다.

솔루션 탐색기 프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 Build 선택합니다.

출력 창이 자동으로 열리면 빌드 프로세스가 표시됩니다. 오류 또는 경고가 있는 경우 출력 창에 오류가 표시됩니다. 빌드가 성공하면 빌드 아티팩트(.dacpac 파일)가 만들어지고 해당 위치가 빌드 출력에 포함됩니다(기본값은 bin\Debug\projectname.dacpac).

옵션 1은 Visual Studio SDK 스타일 SQL 프로젝트에 사용할 수 없습니다. 대신 옵션 2를 사용합니다.

Visual Studio Code 데이타베이스 프로젝트 보기에서 프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 Build 선택합니다.

출력 창이 자동으로 열리면 빌드 프로세스가 표시됩니다. 오류 또는 경고가 있는 경우 출력 창에 오류가 표시됩니다. 빌드가 성공하면 빌드 아티팩트(.dacpac 파일)가 만들어지고 해당 위치가 빌드 출력에 포함됩니다(기본값은 bin/Debug/projectname.dacpac).

옵션 1은 SQL Server Management Studio 사용할 수 없습니다. 대신 옵션 2를 사용합니다.

명령줄에는 옵션 1을 사용할 수 없습니다. 대신 옵션 2를 사용합니다.

옵션 2: 빈 SQL 프로젝트를 새로 만들고 기존 데이터베이스에서 개체 가져오기

또는 프로젝트 만들기 및 개체 가져오기 단계를 구분할 수 있습니다.

1단계: 새 빈 SQL 프로젝트 만들기

개체를 가져오기 전에 새 SQL Database 프로젝트를 만들어 프로젝트를 시작합니다.

파일, 새로를 선택한 다음, Project 선택합니다.

새로운 Project 대화 상자의 검색 상자에 SQL Server 용어를 사용합니다. 가장 큰 결과는 SQL Server Database Project입니다.

새 프로젝트 대화 상자의 스크린샷.

다음을 선택하여 다음 단계를 진행합니다. 데이터베이스 이름과 일치시킬 필요가 없는 프로젝트 이름을 입력합니다. 필요에 따라 프로젝트 위치를 확인하고 수정합니다.

만들기를 선택하여 프로젝트를 만듭니다. 빈 프로젝트가 열리고 편집을 위해 솔루션 탐색기 표시됩니다.

파일, 새로를 선택한 다음, Project 선택합니다.

새로운 Project 대화 상자의 검색 상자에 SQL Server 용어를 사용합니다. 가장 중요한 결과는 SQL Server 데이터베이스 프로젝트, SDK 스타일(미리 보기)입니다.

새 프로젝트 대화 상자의 스크린샷.

다음을 선택하여 다음 단계를 진행합니다. 데이터베이스 이름과 일치시킬 필요가 없는 프로젝트 이름을 입력합니다. 필요에 따라 프로젝트 위치를 확인하고 수정합니다.

만들기를 선택하여 프로젝트를 만듭니다. 빈 프로젝트가 열리고 편집을 위해 솔루션 탐색기 표시됩니다.

Visual Studio Code 데이타베이스 프로젝트 보기에서 새로운 Project 단추를 선택합니다.

새 뷰렛의 스크린샷

첫 번째 프롬프트는 주로 대상 플랫폼이 SQL Server 또는 Azure SQL 여부에 따라 사용할 프로젝트 템플릿을 결정합니다. 특정 버전의 SQL을 선택하라는 메시지가 표시되면 대상 데이터베이스와 일치하는 버전을 선택합니다. 대상 데이터베이스 버전을 모르는 경우 나중에 값을 수정할 수 있으므로 최신 버전을 선택합니다.

표시되는 텍스트 입력에 프로젝트 이름을 입력합니다. 이 이름은 데이터베이스 이름과 일치시킬 필요가 없습니다.

표시되는 폴더 선택 대화 상자에서 프로젝트의 폴더, .sqlproj 파일 및 상주할 기타 내용에 대한 디렉터리를 선택합니다.

SDK 스타일 프로젝트를 만들지 여부를 묻는 메시지가 표시되면 선택합니다.

완료되면 빈 프로젝트가 열리고 편집을 위해 데이터베이스 프로젝트 보기에 표시됩니다.

파일, 새로를 선택한 다음, Project 선택합니다.

새 Project 대화 상자에서 SQL 데이터베이스 Project 선택합니다.

새 프로젝트 대화 상자의 스크린샷.

다음을 선택하여 다음 단계를 진행합니다. 데이터베이스 이름과 일치시킬 필요가 없는 프로젝트 이름을 입력합니다. 필요에 따라 프로젝트 위치를 확인하고 수정합니다.

만들기를 선택하여 프로젝트를 만듭니다. 빈 프로젝트가 열리고 편집을 위해 솔루션 탐색기 표시됩니다.

Microsoft .NET 템플릿을 설치하는 경우 Build.Sql 프로젝트, 명령줄에서 새 SQL 데이터베이스 프로젝트를 만들 수 있습니다. -n 옵션은 프로젝트의 이름을 지정하고 -tp 옵션은 프로젝트 대상 플랫폼을 지정합니다.

사용 가능한 모든 옵션을 보려면 -h 옵션을 사용합니다.

# create a new SQL database project
dotnet new sqlproj -n MyDatabaseProject

2단계: 기존 데이터베이스에서 개체 가져오기

솔루션 탐색기 프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 Import -> 데이터베이스... . 이 옵션을 사용하지 않도록 설정하면 데이터베이스 프로젝트에 개체가 만들어질 수 있습니다. 개체를 삭제하거나 새 프로젝트를 만들 수 있습니다.

데이터베이스 가져오기 대화 상자에서 개체를 가져올 데이터베이스에 대한 연결을 선택합니다. SQL Server 개체 탐색기 데이터베이스에 연결하면 history 목록에 표시됩니다.

Visual Studio에서 데이터베이스 가져오기 대화 상자의 스크린샷입니다.

기본 가져오기 설정은 스키마를 사용하여 개체를 폴더로 가져온 다음 개체 형식을 가져옵니다. 가져오기 설정을 수정하여 폴더 구조를 변경하거나 가져오는 개체에 사용 권한을 포함할 수 있습니다. 가져오기 시작

가져오기가 진행되는 동안 진행률이 데이터베이스 가져오기 대화 상자에 문자로 표시됩니다. 가져오기가 완료되면 가져온 개체가 솔루션 탐색기 표시되고 로그는 Import Schema Logs 아래의 프로젝트 디렉터리의 파일에 저장됩니다. 마침을 선택하여 프로젝트를 반환합니다.

SqlPackage CLI를 사용하여 기존 데이터베이스에서 1단계의 Visual Studio 만든 새 SQL 데이터베이스 프로젝트로 개체를 가져옵니다. 다음 SqlPackage 명령은 데이터베이스의 스키마를 중첩된 스키마 및 개체 유형 폴더로 구성된 MyDatabaseProject 파일로 추출합니다.

sqlpackage /a:Extract /ssn:localhost /sdn:MyDatabase /tf:MyDatabaseProject /p:ExtractTarget=SchemaObjectType

이러한 폴더를 SDK 스타일의 SQL 데이터베이스 프로젝트 폴더에 배치하면 해당 폴더를 가져오거나 SQL 프로젝트 파일을 수정할 필요 없이 프로젝트에 자동으로 포함됩니다.

Visual Studio Code SQL Database Projects 확장에서 데이타베이스 프로젝트 보기를 엽니다. 마우스 오른쪽 단추로 프로젝트 노드를 클릭하고, 데이터베이스에서 프로젝트 업데이트를 선택합니다.

Visual Studio Code의 데이터베이스 업데이트 대화 상자 스크린샷

데이터베이스 업데이트 대화 상자에서 개체를 가져올 데이터베이스에 대한 연결을 선택합니다. 연결 보기에서 데이터베이스에 연결한 경우 기록 목록에 표시됩니다.

스키마 비교 변경 사항 보기를 선택하여 가져올 개체의 하위 집합을 선택하거나 모든 변경 사항 적용을 선택하여 모든 개체를 가져옵니다.

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

데이터베이스 가져오기 대화 상자에서 개체를 가져올 데이터베이스에 대한 연결을 선택합니다.

SSMS의 데이터베이스 가져오기 대화 상자 스크린샷

기본 가져오기 설정은 데이터베이스의 모든 개체를 프로젝트로 가져와서 스키마 및 개체 유형별로 폴더에 정렬하지만 프로젝트의 개체를 덮어쓰면 가져오기를 취소합니다. 프로젝트에서 기존 개체 덮어쓰기를 선택하여 가져오기를 수정하여 데이터베이스의 개체로 프로젝트를 업데이트할 수 있습니다. 가져오기를 선택하여 가져오기를 시작합니다.

가져오기가 완료되면 솔루션 탐색기 가져온 개체로 업데이트됩니다.

SqlPackage CLI를 사용하여 기존 데이터베이스의 스키마를 .dacpac 파일 또는 개별 .sql 파일로 추출합니다. 다음 SqlPackage 명령은 데이터베이스의 스키마를 .sql 중첩된 스키마 및 개체 형식 폴더로 구성된 파일로 추출합니다.

sqlpackage /a:Extract /ssn:localhost /sdn:MyDatabase /tf:MyDatabaseProject /p:ExtractTarget=SchemaObjectType

이러한 폴더를 SDK 스타일의 SQL 데이터베이스 프로젝트 폴더에 배치하면 해당 폴더를 가져오거나 SQL 프로젝트 파일을 수정할 필요 없이 프로젝트에 자동으로 포함됩니다.

3단계: SQL 프로젝트 빌드

빌드 프로세스는 프로젝트 파일에 지정된 대상 플랫폼에 대한 개체와 구문 간의 관계의 유효성을 검사합니다. 빌드 프로세스의 아티팩트 .dacpac 출력은 대상 데이터베이스에 프로젝트를 배포하는 데 사용할 수 있는 파일입니다. 이 파일에는 데이터베이스 스키마의 컴파일된 모델이 포함되어 있습니다.

솔루션 탐색기 프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 Build 선택합니다.

출력 창이 자동으로 열리면 빌드 프로세스가 표시됩니다. 오류 또는 경고가 있는 경우 출력 창에 오류가 표시됩니다. 빌드가 성공하면 빌드 아티팩트(.dacpac 파일)가 만들어지고 해당 위치가 빌드 출력에 포함됩니다(기본값은 bin\Debug\projectname.dacpac).

솔루션 탐색기 프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 Build 선택합니다.

출력 창이 자동으로 열리면 빌드 프로세스가 표시됩니다. 오류 또는 경고가 있는 경우 출력 창에 오류가 표시됩니다. 빌드가 성공하면 빌드 아티팩트(.dacpac 파일)가 만들어지고 해당 위치가 빌드 출력에 포함됩니다(기본값은 bin\Debug\projectname.dacpac).

Visual Studio Code 데이타베이스 프로젝트 보기에서 프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 Build 선택합니다.

출력 창이 자동으로 열리면 빌드 프로세스가 표시됩니다. 오류 또는 경고가 있는 경우 출력 창에 오류가 표시됩니다. 빌드가 성공하면 빌드 아티팩트(.dacpac 파일)가 만들어지고 해당 위치가 빌드 출력에 포함됩니다(기본값은 bin/Debug/projectname.dacpac).

솔루션 탐색기 프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 Build 선택합니다.

SQL Server Management Studio의 솔루션 탐색기에서 사용할 수 있는 빌드 옵션의 스크린샷

출력 창이 자동으로 열리면 빌드 프로세스가 표시됩니다. 오류 또는 경고가 있는 경우 출력 창에 오류가 표시됩니다. 빌드가 성공하면 빌드 아티팩트(.dacpac 파일)가 만들어지고 해당 위치가 빌드 출력에 포함됩니다(기본값은 bin\Debug\projectname.dacpac).

명령줄 커맨드라인에서 dotnet build 명령을 사용하여 SQL 데이터베이스 프로젝트를 빌드할 수 있습니다.

dotnet build

# optionally specify the project file
dotnet build MyDatabaseProject.sqlproj

빌드 출력에는 오류 또는 경고와 발생하는 특정 파일 및 줄 번호가 포함됩니다. 빌드가 성공하면 빌드 아티팩트(.dacpac 파일)가 만들어지고 해당 위치가 빌드 출력에 포함됩니다(기본값은 bin/Debug/projectname.dacpac).