다음을 통해 공유


데이터베이스 프로젝트 개요

업데이트: 2007년 11월

데이터베이스 프로젝트는 데이터베이스 스키마의 오프라인 표현입니다. 이 표현에는 해당 데이터베이스의 개별 인스턴스를 만들거나 기존 인스턴스를 업데이트하는 데 필요한 개체 정의와 배포 스크립트가 포함됩니다. 데이터베이스 프로젝트를 만들어 데이터베이스를 버전 제어에서 관리할 수 있습니다.

데이터베이스 프로젝트를 사용하여 다음과 같은 작업을 수행할 수 있습니다.

  • 데이터베이스 생성 및 배포

  • 버전 제어에서 데이터베이스 관리

  • 배포된 기존 데이터베이스에서 개체를 가져와 데이터베이스 프로젝트 생성

  • 데이터베이스 프로젝트를 배포된 데이터베이스와 비교

  • 데이터베이스 프로젝트가 배포된 데이터베이스와 다시 일치하도록 배포된 데이터베이스에 대한 변경 내용 가져오기

  • 데이터베이스 개체 및 스크립트 추가, 수정, 삭제

  • 하나 이상의 데이터 생성 계획을 만들어 데이터베이스를 테스트 데이터로 채우기

데이터베이스 스키마 가져오기

데이터베이스 인스턴스나 스크립트에서 데이터베이스 스키마를 가져올 수 있습니다. 데이터베이스 스키마는 가져올 때 유효성이 검사됩니다. 인식되지 않는 문은 ScriptsIgnoredOnImport.sql 파일에 보관됩니다. 더 이상 존재하지 않는 개체를 참조하는 개체 정의를 가져오는 경우 데이터베이스 프로젝트를 빌드 및 배포하기 전에 해당 오류를 해결해야 합니다. 문제가 되는 개체를 삭제하여 오류를 해결할 수 있습니다. 예를 들어, 더 이상 존재하지 않는 테이블을 참조하는 저장 프로시저를 가져온 경우 해당 저장 프로시저를 제거하면 됩니다.

대규모 데이터베이스 스키마를 가져오는 경우 초기 정리 프로세스를 수행하는 데 시간이 오래 걸릴 수 있습니다. 그러나 오류를 제거한 후에는 Visual Studio Team System Database Edition에서 새 오류가 발생하지 않도록 방지합니다. 수정한 개체 정의를 저장할 때 모든 변경 내용의 유효성이 검사됩니다.

데이터베이스 프로젝트 구조

데이터베이스 프로젝트는 .dbproj 파일로 구성되며 데이터 생성 계획, 스키마 개체 및 스크립트의 세 가지 기본 하위 폴더를 포함합니다. 각 하위 폴더에 대해서는 이 항목의 뒷부분에서 자세히 설명합니다. 솔루션 탐색기에서는 데이터베이스 프로젝트의 파일 기반 뷰를 제공합니다. 솔루션 탐색기에 나타나는 각 항목은 디스크의 파일이나 폴더에 해당합니다. 반대로 스키마 뷰에서는 데이터베이스의 개체가 개별 파일로 존재하는지 여부를 확인할 수 있도록 개체 기반 뷰를 제공합니다.

솔루션 탐색기에서는 전체 프로젝트 또는 개별 파일을 대상으로 작업을 수행할 수 있으며 데이터베이스 프로젝트에 대해 다음과 같은 작업을 수행할 수 있습니다.

  • 데이터베이스 스키마 가져오기
    지정하는 기존 데이터베이스에서 스키마 정보를 가져올 수 있습니다.

  • 스크립트 가져오기
    개체 정의가 포함된 스크립트에서 하나 이상의 개체에 대한 스키마 정보를 가져올 수 있습니다.

  • 빌드
    동일한 스키마로 데이터베이스를 만들거나 기존 데이터베이스와 해당 스키마를 동기화하는 빌드 스크립트를 생성할 수 있습니다. 데이터베이스 프로젝트의 속성은 배포뿐만 아니라 대상 데이터베이스의 설정도 제어합니다.

  • 다시 빌드
    마지막으로 프로젝트를 빌드한 후에 변경된 내용이 없더라도 이 옵션을 사용하여 프로젝트를 빌드할 수 있습니다.

  • 배포
    선택한 구성을 기반으로 데이터베이스 프로젝트를 새 데이터베이스나 기존 데이터베이스에 배포할 수 있습니다. 데이터베이스 프로젝트가 최신이 아닌 경우 이 작업은 해당 프로젝트를 배포하기 전에 빌드합니다.

  • 정리
    빌드, 다시 빌드 또는 배포 작업의 결과로 생성된 모든 기존 빌드 스크립트를 삭제할 수 있습니다.

  • 추가
    데이터베이스 프로젝트에 폴더 및 프로젝트 항목 파일을 추가할 수 있습니다. 예를 들어 데이터베이스 개체 정의가 포함된 프로젝트 항목을 추가할 수 있습니다.

  • 시작 프로젝트로 설정
    데이터베이스 프로젝트가 솔루션에 대한 시작 프로젝트로 표시되도록 지정할 수 있습니다. 솔루션에 다른 프로젝트가 있는 경우 데이터베이스 프로젝트에는 사용자 인터페이스 요소가 없으므로 시작 프로젝트로 보다 적합할 수 있습니다.

  • 소스 제어에 솔루션 추가
    데이터베이스 프로젝트가 포함된 솔루션을 버전 제어에서 관리할 수 있습니다.

  • 잘라내기
    프로젝트를 클립보드에 복사할 수 있습니다. 이 작업을 수행하면 프로젝트를 다른 위치에 붙여넣을 때 솔루션의 현재 위치에서 해당 프로젝트가 제거되도록 표시됩니다.

  • 제거
    현재 솔루션에서 데이터베이스 프로젝트를 제거할 수 있습니다.

  • 이름 바꾸기
    데이터베이스 프로젝트의 이름을 바꿀 수 있습니다. 프로젝트가 버전 제어에서 관리되는 경우 이 작업을 완료할 수 있도록 체크 아웃됩니다.

  • 프로젝트 언로드
    데이터베이스 프로젝트를 언로드할 수 있습니다. 다중 프로젝트가 포함된 큰 솔루션을 열 때 현재 작업 중인 프로젝트만 로드하려는 경우 프로젝트를 언로드할 수 있습니다. 데이터베이스 프로젝트를 언로드한 다음에는 프로젝트 다시 로드 명령을 사용하여 다시 로드할 수 있습니다.

  • 모든 파일 표시
    이 설정을 전환하여 데이터베이스 프로젝트에서 제외한 파일을 표시하거나 숨길 수 있습니다.

  • 속성
    데이터베이스 프로젝트에 대한 빌드 및 배포의 여러 측면을 제어하는 프로젝트 속성을 보고 사용자 지정할 수 있습니다.

  • 새로 고침
    솔루션 탐색기에 표시된 데이터베이스 개체를 새로 고칠 수 있습니다. 이렇게 하면 개체 정의가 포함된 파일의 내용이 다시 해석됩니다.

데이터 생성 계획

기본적으로 이 하위 폴더에는 배포된 데이터베이스에 대한 표현 테스트 데이터를 생성하기 위해 만든 모든 계획이 포함됩니다.

데이터 생성 계획 하위 폴더에 대해 다음과 같은 작업을 수행할 수 있습니다.

  • 새 항목 추가
    데이터 생성 계획과 같은 프로젝트 항목을 만들어 프로젝트에 추가할 수 있습니다.

  • 기존 항목 추가
    이미 존재하는 항목을 데이터베이스 프로젝트에 추가할 수 있습니다. 해당 항목의 복사본이 프로젝트 폴더 또는 프로젝트 폴더의 하위 폴더에 생성됩니다.

  • 복사
    프로젝트의 모든 데이터 생성 계획을 클립보드에 복사할 수 있습니다.

스키마 개체

기본적으로 이 하위 폴더에는 데이터베이스 프로젝트의 개체에 대해 개체 형식별로 그룹화된 정의가 들어 있는 모든 파일이 포함됩니다.

스키마 개체 하위 폴더에 대해 다음과 같은 작업을 수행할 수 있습니다.

  • 새 항목 추가
    테이블 정의와 같은 프로젝트 항목을 만들어 프로젝트에 추가할 수 있습니다.

  • 기존 항목 추가
    이미 존재하는 항목을 데이터베이스 프로젝트에 추가할 수 있습니다. 해당 항목의 복사본이 프로젝트 폴더 또는 프로젝트 폴더의 하위 폴더에 생성됩니다.

  • 복사
    프로젝트의 모든 스키마 개체를 클립보드에 복사할 수 있습니다.

데이터베이스 스키마 개체는 프로젝트 폴더에 저장되는 .sql 파일 컬렉션에 정의됩니다. 대부분의 개체는 개별 파일에 정의됩니다. 테이블 정의가 포함된 파일에 지정되는 테이블의 열과 저장 프로시저 또는 함수가 포함된 파일에 지정되는 저장 프로시저 또는 함수에 대한 매개 변수는 예외입니다.

.sql 파일의 빌드 작업 속성은 파일에 데이터베이스 개체 정의가 들어 있는지 확인하기 위해 파일을 구문 분석할지 여부를 나타냅니다. 기본적으로 데이터베이스 개체 정의가 포함된 파일은 빌드로 설정되고 다른 .sql 스크립트와 기타 파일은 빌드에 없음으로 설정됩니다. 빌드 작업 속성은 파일을 빌드 스크립트에 포함할지 여부도 결정합니다.

각 개체의 이름은 해당 파일 이름을 결정하며 개체 형식은 다음과 같이 해당 기본 파일 확장명을 결정합니다.

데이터베이스 개체 형식

이름

함수

ObjectName.function.sql

인덱스

ObjectName.index.sql

저장 프로시저

ObjectName.proc.sql

테이블

ObjectName.table.sql

트리거

ObjectName.trigger.sql

ObjectName.view.sql

기본 키 제약 조건

ObjectName.pkey.sql

외래 키 제약 조건

ObjectName.fkey.sql

고유 키 제약 조건

ObjectName.ukey.sql

CHECK 제약 조건

ObjectName.chkconst.sql

DEFAULT 제약 조건

ObjectName.defconst.sql

통계

ObjectName.statistic.sql

개체 형식이 파일 이름에 내포된 개체 형식과 일치하지 않는 개체를 .sql 파일 내에 정의하는 경우 오류 목록 창에 오류가 나타납니다. 예를 들어 데이터베이스 프로젝트에 MyTable.table.sql이라는 파일을 추가했지만 해당 파일 내에 뷰를 정의한 경우 오류 목록 창에 오류 메시지가 나타납니다.

스키마 개체 하위 폴더의 파일에 대해 다음과 같은 작업을 수행할 수 있습니다.

  • 열기
    파일 형식에 따라 적절한 편집기에서 파일을 엽니다. 예를 들어 .sql 파일의 경우 T-SQL(Transact-SQL) 편집기가 열립니다.

  • 연결 프로그램
    지정하는 다른 편집기에서 개체 정의가 포함된 파일을 엽니다.

  • 코드 보기
    T-SQL 편집기에서 파일을 엽니다.

  • 프로젝트에서 제외
    프로젝트에서 제외된 것으로 파일을 표시합니다. 제외된 파일은 다음에 데이터베이스 프로젝트를 빌드하거나 배포할 때 생성되는 빌드 스크립트에 포함되지 않습니다. 아직 작업을 진행 중이지만 나머지 데이터베이스를 배포하려는 경우 파일을 제외할 수 있습니다.

  • 잘라내기
    선택한 파일을 클립보드에 복사하고 데이터베이스 프로젝트에서 삭제합니다.

  • 스키마 뷰에서 개체 보기
    스키마 뷰가 아직 표시되어 있지 않은 경우 연 다음 사용자가 클릭하여 선택한 파일에 해당 정의가 포함된 데이터베이스 개체를 강조 표시합니다. 이 옵션은 유효한 개체 정의가 포함된 .sql 파일에 대해서만 사용할 수 있습니다.

  • 복사
    선택한 파일을 클립보드에 복사합니다.

  • 이름 바꾸기
    파일의 이름을 바꿉니다. 이는 파일 내용에 대해 이름 바꾸기 리팩터링을 수행하지 않으며 단순히 파일의 이름만 바꿉니다.

  • 삭제
    선택한 파일을 데이터베이스 프로젝트에서 삭제하고 디스크에서 제거합니다. 이 작업의 결과는 영구적이므로 삭제 확인 메시지가 표시됩니다.

  • 속성
    클릭한 파일에 대한 속성 창을 표시합니다.

스크립트

기본적으로 이 하위 폴더에는 데이터베이스에 대한 관리 스크립트, 배포 전 스크립트 및 배포 후 스크립트가 포함됩니다. 빌드 작업 속성은 관리 스크립트에 대해 빌드에 없음으로 설정되고 배포 스크립트에 대해 배포 전 또는 배포 후로 설정됩니다. 데이터베이스 프로젝트에는 하나의 배포 전 스크립트와 하나의 배포 후 스크립트만 있을 수 있습니다. 배포 전 스크립트와 배포 후 스크립트에는 추가 스크립트가 포함되는 경우가 많습니다. 이러한 추가 스크립트도 데이터베이스 프로젝트의 일부일 수 있으므로 해당 빌드 작업 속성이 빌드에 없음으로 설정됩니다.

스크립트 하위 폴더에 대해 다음과 같은 작업을 수행할 수 있습니다.

  • 새 항목 추가
    관리 스크립트와 같은 프로젝트 항목을 만들어 프로젝트에 추가할 수 있습니다.

  • 기존 항목 추가
    이미 존재하는 항목을 데이터베이스 프로젝트에 추가할 수 있습니다. 해당 항목의 복사본이 프로젝트 폴더 또는 프로젝트 폴더의 하위 폴더에 생성됩니다.

  • 복사
    프로젝트의 모든 스크립트를 클립보드에 복사할 수 있습니다.

스키마 뷰

스키마 뷰에서는 포함된 데이터베이스 개체에 초점을 맞춰 데이터베이스 프로젝트에 대한 대체 뷰를 표시합니다. 데이터 생성 계획 및 스크립트에 데이터베이스 개체의 정의가 포함되어 있지 않으므로 스키마 뷰에는 두 항목 형식에 해당하는 항목이 없습니다.

스키마 뷰에서는 프로젝트 노드에 대해 다음과 같은 작업을 수행할 수 있습니다.

  • 데이터베이스 스키마 가져오기
    지정하는 기존 데이터베이스에서 스키마 정보를 가져올 수 있습니다.

  • 스크립트 가져오기
    개체 정의가 포함된 스크립트에서 하나 이상의 개체에 대한 스키마 정보를 가져올 수 있습니다.

  • 스키마 비교
    데이터베이스 프로젝트에 대한 스키마 정보를 배포된 데이터베이스에 대한 스키마 정보와 비교할 수 있습니다.

  • 추가
    테이블, 뷰, 저장 프로시저, 인라인 함수, 테이블 함수, 스칼라 함수, 사용자 정의 데이터 형식, 파일 그룹, 데이터베이스 응용 프로그램 역할, 데이터베이스 역할 및 데이터베이스 사용자와 같은 데이터베이스 개체를 데이터베이스 프로젝트에 추가할 수 있습니다.

  • 속성
    데이터베이스 속성을 볼 수 있습니다.

참고:

대칭 키, 비대칭 키 및 인증서는 데이터베이스 프로젝트에 개체로 추가할 수 없으며 배포 전 스크립트에서 만들어야 합니다. 이러한 개체가 포함된 데이터베이스에서 스키마를 가져오는 경우 배포 전 스크립트에는 키 및 인증서의 이름이 있는 자리 표시자 주석이 포함됩니다. 이때 해당 개체를 만들려면 배포 전 스크립트를 수정해야 합니다.

  • 새로 고침
    스키마 뷰에 표시된 데이터베이스 개체를 새로 고칠 수 있습니다. 이렇게 하면 개체 정의가 포함된 파일의 내용이 다시 해석됩니다.

  • 솔루션 탐색기
    솔루션 탐색기에서 스키마 뷰로 포커스를 전환할 수 있습니다.

  • 스키마 뷰 필터
    개체 형식 또는 스키마별 개체 표시 사이를 전환할 수 있습니다. 그룹화를 전환하려면 데이터베이스 프로젝트 내의 프로젝트 노드 또는 항목을 선택해야 합니다.

스키마 개체

스키마 뷰에는 솔루션 탐색기의 각 데이터베이스 프로젝트에 대한 노드가 포함됩니다. 각 데이터베이스 프로젝트 노드에는 개체 형식 또는 스키마별로 그룹화된 데이터베이스 프로젝트의 개체에 대한 모든 정의가 포함됩니다.

스키마 뷰에 나타나는 데이터베이스 개체에 대해 다음과 같은 작업을 수행할 수 있습니다.

  • 스크립트 가져오기
    개체 정의가 포함된 스크립트에서 하나 이상의 개체에 대한 스키마 정보를 가져올 수 있습니다.

  • 열기
    T-SQL 편집기에서 개체 정의를 열 수 있습니다. 파일을 변경하면 스키마 뷰가 업데이트됩니다. 예를 들어 테이블 정의에 열을 추가하면 해당 열이 스키마 뷰에 나타납니다.

  • 연결 프로그램
    지정하는 다른 편집기에서 개체 정의가 포함된 파일을 열 수 있습니다.

  • 추가
    테이블, 뷰, 저장 프로시저, 인라인 함수, 테이블 함수, 스칼라 함수, 사용자 정의 데이터 형식, 파일 그룹, 데이터베이스 응용 프로그램 역할, 데이터베이스 역할 및 데이터베이스 사용자와 같은 데이터베이스 개체를 데이터베이스 프로젝트에 추가할 수 있습니다. 데이터베이스 프로젝트 내에 폴더를 추가하여 개체를 구성할 수도 있습니다.

  • 이름 바꾸기(리팩터링 하위 메뉴)
    데이터베이스 개체의 이름을 바꿀 수 있습니다. 개체가 버전 제어에서 관리되는 경우 이 작업을 완료할 수 있도록 개체 정의가 포함된 파일이 체크 아웃됩니다. 이 작업으로 인해 리팩터링 작업이 호출되며 데이터베이스 프로젝트 및 연결된 모든 데이터베이스 단위 테스트 프로젝트 내에서 이름을 바꾼 개체에 대한 모든 참조를 업데이트할 수 있습니다.

  • 솔루션 탐색기에서 파일 보기
    이 옵션을 사용하면 클릭한 데이터베이스 개체에 대한 정의가 포함된 파일을 솔루션 탐색기에서 찾을 수 있습니다.

  • 속성
    개체 속성을 볼 수 있습니다. 스키마 뷰의 개체에 대해 사용 가능한 거의 모든 속성이 읽기 전용입니다. 속성을 변경하려면 개체 정의를 편집해야 합니다.

기본 프로젝트 구조 수정

이 항목에서 설명하는 구조는 솔루션 탐색기의 기본 프로젝트 구조이지만 프로젝트 내용을 다시 정렬할 수도 있습니다. 추가 폴더를 만들고 기존 폴더의 이름을 바꿀 수 있으며 해당 폴더를 끌거나 잘라내기/붙여넣기 작업을 수행하여 프로젝트 내에서 파일을 이동할 수 있습니다. 데이터베이스 개체 정의는 프로젝트 내의 위치가 아니라 빌드로 설정된 빌드 작업 속성에 의해 식별됩니다. 배포 스크립트도 PreDeploy 또는 PostDeploy로 설정된 빌드 작업 속성에 의해 식별됩니다. 프로젝트에 있는 다른 파일의 빌드 작업 속성은 빌드에 없음으로 설정됩니다.

스키마 뷰에서는 개체 형식 또는 스키마별 프로젝트 내용 표시 사이만 전환할 수 있습니다.

참고 항목

개념

데이터베이스 개체 작업 개요

Database Edition의 용어 개요

기타 리소스

팀 환경에서의 데이터베이스 생성 및 배포 개요

데이터베이스 스키마 빌드 및 배포

데이터베이스 스크립트 작업

팀 환경에서 데이터베이스 프로젝트 작업

연습(버전 제어 데이터베이스 스키마 만들기 및 업데이트)