SQL 데이터베이스 시작
적용 대상: SQL Server 2022(16.x) Azure SQL 데이터베이스 Azure SQL Managed Instance
SQL 데이터베이스 프로젝트는 테이블, 저장 프로시저 또는 함수와 같은 단일 데이터베이스의 스키마를 구성하는 SQL 개체의 로컬 표현입니다. SQL 데이터베이스 프로젝트의 개발 주기를 통해 개발 모범 사례로 익숙한 CI/CD(연속 통합 및 지속적인 배포) 워크플로에 데이터베이스 개발을 통합할 수 있습니다.
이 문서에서는 새 SQL 프로젝트를 만들고, 프로젝트에 개체를 추가하고, 프로젝트를 빌드 및 배포하는 단계를 안내합니다. 이 가이드에서는 Visual Studio(SQL Server Data Tools) 지침을 제외하고 SDK 스타일 SQL 프로젝트에 중점을 둡니다.
필수 조건
# install SqlPackage CLI
dotnet tool install -g Microsoft.SqlPackage
# install Microsoft.Build.Sql.Templates
dotnet new install Microsoft.Build.Sql.Templates
참고 항목
SQL 데이터베이스 프로젝트의 배포를 완료하려면 Azure SQL 또는 SQL Server 인스턴스에 액세스해야 합니다. Windows 또는 컨테이너에서 SQL Server 개발자 버전을 사용하여 로컬에서 무료로 개발할 수 있습니다.
1단계: 새 프로젝트 만들기
개체를 수동으로 추가하기 전에 새 SQL Database 프로젝트를 만들어 프로젝트를 시작합니다. 스키마 비교 도구를 사용하는 등 기존 데이터베이스의 개체로 프로젝트를 즉시 채울 수 있는 프로젝트를 만드는 다른 방법이 있습니다.
파일, 새로 만들기, 프로젝트를 차례로 선택합니다.
새 프로젝트 대화 상자의 검색 창에서 SQL Server 조건을 사용하세요. 상위 결과가 SQL Server 데이터베이스 프로젝트여야 합니다.
다음을 선택하여 다음 단계를 진행합니다. 데이터베이스 이름과 일치시킬 필요가 없는 프로젝트 이름을 제공합니다. 필요에 따라 프로젝트 위치를 확인하고 수정합니다.
만들기를 선택하여 프로젝트를 만듭니다. 빈 프로젝트가 열리고 솔루션 탐색기 보기에 표시되어 편집할 수 있게 됩니다.
파일, 새로 만들기, 프로젝트를 차례로 선택합니다.
새 프로젝트 대화 상자의 검색 창에서 SQL Server 조건을 사용하세요. 상위 결과가 SQL Server 데이터베이스 프로젝트, SDK 스타일(미리 보기)이어야 합니다.
다음을 선택하여 다음 단계를 진행합니다. 데이터베이스 이름과 일치시킬 필요가 없는 프로젝트 이름을 제공합니다. 필요에 따라 프로젝트 위치를 확인하고 수정합니다.
만들기를 선택하여 프로젝트를 만듭니다. 빈 프로젝트가 열리고 솔루션 탐색기 보기에 표시되어 편집할 수 있게 됩니다.
VS Code 또는 Azure Data Studio의 데이터베이스 프로젝트 보기에서 새 프로젝트 단추를 선택합니다.
첫 번째 프롬프트는 주로 대상 플랫폼이 SQL Server인지 Azure SQL인지에 따라 사용할 프로젝트 템플릿을 결정합니다. 특정 버전의 SQL을 선택하라는 메시지가 표시되면 대상 데이터베이스와 일치하는 버전을 선택하지만 대상 데이터베이스 버전을 알 수 없는 경우 나중에 값을 수정할 수 있으므로 최신 버전을 선택합니다.
표시되는 텍스트 입력에 프로젝트 이름을 입력합니다. 이 이름은 데이터베이스 이름과 일치시킬 필요가 없습니다.
표시되는 “폴더 선택” 대화 상자에서 프로젝트의 폴더, .sqlproj
파일 및 기타 콘텐츠가 상주할 디렉터리를 선택합니다.
SDK 스타일 프로젝트(미리 보기)를 만들지 여부를 묻는 메시지가 표시되면 예를 선택합니다.
완료된 후, 빈 프로젝트는 데이터베이스 프로젝트 보기에서 열고 편집을 위해 확인할 수 있습니다.
Microsoft.Build.Sql 프로젝트에 대한 .NET 템플릿이 설치되어 있으면 명령줄에서 새 SQL 데이터베이스 프로젝트를 만들 수 있습니다. -n
옵션은 프로젝트의 이름을 지정하고 -tp
옵션은 프로젝트 대상 플랫폼을 지정합니다.
사용 가능한 모든 옵션을 보려면 -h
옵션을 사용합니다.
# install Microsoft.Build.Sql.Templates
dotnet new sqlproject -n MyDatabaseProject
2단계: 프로젝트에 개체 추가
솔루션 탐색기에서 프로젝트 노드를 마우스 오른쪽 버튼으로 클릭하고 추가를 선택한 다음 테이블을 선택합니다. 테이블 이름을 지정할 수 있는 새 항목 추가 대화 상자가 나타납니다. 추가를 선택하여 SQL 프로젝트 내 테이블을 만듭니다.
테이블은 Visual Studio 테이블 디자이너에서 열, 인덱스 및 기타 테이블 속성을 추가할 수 있는 템플릿 테이블 정의와 함께 열립니다. 초기 편집을 완료하면 파일을 저장합니다.
뷰, 저장 프로시저 및 함수와 같은 새 항목 추가 대화 상자를 통해 더 많은 데이터베이스 개체를 추가할 수 있습니다. 솔루션 탐색기 프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 추가를 선택한 다음 원하는 개체 형식을 선택하여 대화 상자에 액세스합니다. 프로젝트의 파일은 추가 아래의 새 폴더 옵션을 통해 폴더로 구성할 수 있습니다.
솔루션 탐색기에서 프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 추가, 새 항목을 선택합니다. 새 항목 추가 대화 상자가 나타나고 모든 템플릿 표시, 테이블을 선택합니다. 테이블 이름을 파일 이름으로 지정하고 추가를 선택하여 SQL 프로젝트에서 테이블을 만듭니다.
열, 인덱스 및 기타 테이블 속성을 추가할 수 있는 템플릿 테이블 정의가 있는 Visual Studio 쿼리 편집기에서 테이블이 열립니다. 초기 편집을 완료하면 파일을 저장합니다.
뷰, 저장 프로시저 및 함수와 같은 새 항목 추가 대화 상자를 통해 더 많은 데이터베이스 개체를 추가할 수 있습니다. 솔루션 탐색기 프로젝트에서 프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 추가를 선택한 다음, 모든 템플릿 표시 뒤에 원하는 개체 유형을 선택하여 대화 상자에 액세스합니다. 프로젝트의 파일은 추가 아래의 새 폴더 옵션을 통해 폴더로 구성할 수 있습니다.
VS Code 또는 Azure Data Studio의 데이터베이스 프로젝트 보기에서 프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 테이블 추가를 선택합니다. 표시되는 대화 상자에서 테이블 이름을 지정합니다.
열, 인덱스 및 기타 테이블 속성을 추가할 수 있는 템플릿 테이블 정의가 있는 텍스트 편집기에서 테이블이 열립니다. 초기 편집을 완료하면 파일을 저장합니다.
뷰, 저장 프로시저 및 함수와 같은 프로젝트 노드의 상황에 맞는 메뉴를 통해 더 많은 데이터베이스 개체를 추가할 수 있습니다. VS Code 또는 Azure Data Studio의 데이터베이스 프로젝트 보기에서 프로젝트 노드를 마우스 오른쪽 단추로 클릭한 다음 원하는 개체 형식을 클릭하여 대화 상자에 액세스합니다. 프로젝트의 파일은 추가 아래의 새 폴더 옵션을 통해 폴더로 구성할 수 있습니다.
파일은 프로젝트 디렉터리 또는 중첩된 폴더에서 만들어 프로젝트에 추가할 수 있습니다. 파일 익스텐션은 .sql
여야 하며 개체 유형 또는 스키마별로 구성하고 개체 유형을 구성하는 것이 좋습니다.
테이블에 대한 기본 템플릿을 프로젝트에서 새 테이블 개체를 만들기 위한 시작점으로 사용할 수 있습니다.
CREATE TABLE [dbo].[Table1]
(
[Id] INT NOT NULL PRIMARY KEY
)
3단계: 프로젝트 빌드
빌드 프로세스는 프로젝트 파일에 지정된 대상 플랫폼에 대한 개체와 구문 간의 관계의 유효성을 검사합니다. 빌드 프로세스의 아티팩트 출력은 대상 데이터베이스에 프로젝트를 배포하는 데 사용할 수 있는 .dacpac
파일이며 데이터베이스 스키마의 컴파일된 모델을 포함합니다.
솔루션 탐색기에서, 프로젝트 노드를 마우스 우클릭한 후 빌드를 선택합니다.
출력 창이 자동으로 열리면 빌드 프로세스가 표시됩니다. 오류 또는 경고가 발생한 경우, 출력 창에 표시됩니다. 빌드가 성공하면 빌드 아티팩트(.dacpac
파일)가 만들어지고 해당 위치가 빌드 출력에 포함됩니다(기본값은 bin\Debug\projectname.dacpac
).
솔루션 탐색기에서, 프로젝트 노드를 마우스 우클릭한 후 빌드를 선택합니다.
출력 창이 자동으로 열리면 빌드 프로세스가 표시됩니다. 오류 또는 경고가 발생한 경우, 출력 창에 표시됩니다. 빌드가 성공하면 빌드 아티팩트(.dacpac
파일)가 만들어지고 해당 위치가 빌드 출력에 포함됩니다(기본값은 bin\Debug\projectname.dacpac
).
VS Code 또는 Azure Data Studio의 데이터베이스 프로젝트 보기에서 프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 빌드를 선택합니다.
출력 창이 자동으로 열리면 빌드 프로세스가 표시됩니다. 오류 또는 경고가 발생한 경우, 출력 창에 표시됩니다. 빌드가 성공하면 빌드 아티팩트(.dacpac
파일)가 만들어지고 해당 위치가 빌드 출력에 포함됩니다(기본값은 bin/Debug/projectname.dacpac
).
dotnet build
명령을 사용하여 명령줄에서 SQL Database 프로젝트를 빌드할 수 있습니다.
dotnet build
# optionally specify the project file
dotnet build MyDatabaseProject.sqlproj
빌드 출력에는 오류 또는 경고와 발생하는 특정 파일 및 줄 번호가 포함됩니다. 빌드가 성공하면 빌드 아티팩트(.dacpac
파일)가 만들어지고 해당 위치가 빌드 출력에 포함됩니다(기본값은 bin/Debug/projectname.dacpac
).
4단계: 프로젝트 배포
.dacpac
파일에서 데이터베이스 스키마의 컴파일된 모델은 SqlPackage
명령줄 도구 또는 기타 배포 도구를 사용하여 대상 데이터베이스에 배포할 수 있습니다. 배포 프로세스는 대상 데이터베이스를 .dacpac
에 정의된 스키마와 일치하도록 업데이트하는 데 필요한 단계를 결정하여 데이터베이스에 이미 존재하는 개체를 기반으로 필요에 따라 개체를 만들거나 변경합니다. 따라서 배포 프로세스는 문제를 일으키지 않고 여러 번 실행할 수 있으며, 상태를 미리 확인할 필요 없이 여러 데이터베이스에 동일한 .dacpac
을(를) 배포할 수 있습니다.
솔루션 탐색기에서 프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 게시...를 선택합니다.
대상 데이터베이스 연결을 설정하는 게시 대화 상자가 열립니다. 배포할 기존 SQL 인스턴스가 없는 경우 LocalDB((localdb)\MSSQLLocalDB
)는 Visual Studio와 함께 설치되며 테스트 및 개발에 사용할 수 있습니다.
데이터베이스 이름을 지정하고 게시를 선택하여 대상 데이터베이스에 프로젝트를 배포하거나 스크립트 생성을 선택하여 실행하기 전에 검토할 스크립트를 생성합니다.
솔루션 탐색기에서 프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 게시...를 선택합니다.
대상 데이터베이스 연결을 설정하는 게시 대화 상자가 열립니다. 배포할 기존 SQL 인스턴스가 없는 경우 LocalDB((localdb)\MSSQLLocalDB
)는 Visual Studio와 함께 설치되며 테스트 및 개발에 사용할 수 있습니다.
데이터베이스 이름을 지정하고 게시를 선택하여 대상 데이터베이스에 프로젝트를 배포하거나 스크립트 생성을 선택하여 실행하기 전에 검토할 스크립트를 생성합니다.
VS Code 또는 Azure Data Studio의 데이터베이스 프로젝트 보기에서 프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 게시를 선택합니다.
팁
배포에 사용할 수 있는 SQL 인스턴스가 없는 경우 SQL Database 프로젝트 확장은 새 컨테이너에서 로컬 SQL Server 인스턴스를 만들 수 있습니다. Docker Desktop과 같은 컨테이너 런타임이 실행 중인 상태에서 드롭다운 목록에서 새 SQL Server 로컬 개발 컨테이너에 게시를 선택합니다.
배포할 기존 SQL 인스턴스가 있는 경우 기존 SQL 서버에 게시를 선택한 다음 게시 프로필을 묻는 메시지가 표시되면 프로필을 사용하지 마세요.
대상 데이터베이스에 대한 연결을 구성하지 않은 경우 새 연결을 만들라는 메시지가 표시됩니다. 새 연결 입력은 서버 이름, 인증 방법 및 데이터베이스 이름을 요청합니다.
연결이 구성되면 배포 프로세스가 시작됩니다. 실행하기 전에 배포를 자동으로 실행(게시)하거나 검토할 스크립트를 생성하도록 선택할 수 있습니다(스크립트 생성).
SqlPackage CLI는 게시 작업을 사용하여 대상 데이터베이스에 .dacpac
파일을 배포하는 데 사용됩니다.
예를 들어 연결 문자열 기반으로 대상 데이터베이스에 .dacpac
파일을 배포하려면 다음을 수행합니다.
sqlpackage /Action:Publish /SourceFile:bin/Debug/projectname.dacpac /TargetConnectionString:{yourconnectionstring}