연습: 공유 로그인을 참조하는 데이터베이스 프로젝트 만들기 및 배포

여러 데이터베이스에서 동일한 서버 개체를 참조하는 경우 각 데이터베이스에 대한 프로젝트와 공유 로그인, 키 또는 사용자 지정 오류 메시지 등의 개체를 가져올 서버 프로젝트를 만들 수 있습니다. 이 연습에서는 서버 프로젝트로 가져올 공유 로그인을 참조하는 데이터베이스에 대한 격리된 개발 환경을 설정합니다. 이 환경은 프로덕션 데이터베이스에 있는 모든 개체에 대한 정의를 포함하는 데이터베이스 프로젝트에 기반을 둡니다.

이 연습에서는 다음 작업을 수행합니다.

  • 공유 서버 프로젝트 설정

  • 복합 데이터베이스 프로젝트 만들기

  • 프로젝트를 팀에서 사용할 수 있게 만들기(선택 사항)

사전 요구 사항

Visual Studio Premium이 설치되어 있고 가져올 수 있는 서버 개체가 있는 SQL Server의 복사본에 액세스할 수 있어야 합니다. SQL Server의 해당 복사본은 데이터베이스 프로젝트를 배포할 수 있는 서버에서 실행 중이어야 합니다.

공유 서버 프로젝트 설정

개발 환경에서 공유 로그인을 참조할 경우 해당 로그인은 일반적으로 이미 존재하며 서버 관리자가 유지 관리하는 서버 프로젝트에 정의되어 있습니다.

서버 프로젝트를 만들려면

  1. 파일 메뉴에서 새로 만들기를 가리킨 다음 프로젝트를 클릭합니다.

    새 프로젝트 대화 상자가 나타납니다.

  2. 설치된 템플릿에서 데이터베이스 노드를 확장하고 SQL Server를 클릭합니다.

    참고

    Visual Studio Professional을 사용하는 경우에는 설치된 템플릿에서 데이터베이스 노드, SQL Server 노드를 차례로 확장한 다음 고급을 클릭합니다.

  3. 템플릿 목록에서 SQL Server 2008 서버 프로젝트를 클릭합니다.

  4. 이름에 SharedServerProject를 입력합니다.

    위치솔루션 이름의 값은 변경할 필요가 없습니다.

  5. 솔루션용 디렉터리 만들기 확인란이 아직 선택되어 있지 않은 경우 선택합니다.

  6. 소스 제어에 추가 확인란이 아직 선택 취소되어 있지 않은 경우 선택 취소하고 확인을 클릭합니다.

    빈 서버 프로젝트가 솔루션에 추가되고 솔루션 탐색기에 나타납니다.

    다음에는 다음 서버 개체 및 설정을 가져옵니다.

서버 개체 및 설정을 가져오려면

  1. 솔루션 탐색기에서 SharedServerProject 프로젝트를 클릭합니다.

  2. 프로젝트 메뉴에서 개체 및 설정 가져오기를 클릭합니다.

    참고

    1, 2단계를 수행하는 대신 SharedServerProject를 마우스 오른쪽 단추로 클릭하고 개체 및 설정 가져오기를 클릭해도 됩니다.

  3. 데이터베이스 가져오기 마법사에서 가져올 개체 및 설정이 있는 서버에 대한 연결을 지정하고 시작을 클릭합니다.

    중요

    이 연습에서는 데이터베이스 프로젝트를 배포할 서버와 동일한 서버를 지정해야 합니다.

    서버의 개체 및 설정을 프로젝트로 가져오게 됩니다.

  4. 개체 및 설정을 가져왔으면 마침을 클릭합니다.

  5. 보기 메뉴에서 데이터베이스 스키마 뷰를 클릭합니다.

  6. SharedServerProject 노드, Server Level Objects 노드, Security 노드, Logins 노드를 차례로 확장합니다.

  7. 이 연습의 뒷부분에서 사용할 수 있도록 표시된 로그인 중 하나를 확인하고 기록해 둡니다.

    다음에는 서버 프로젝트를 빌드합니다.

서버 프로젝트를 빌드하려면

  • 빌드 메뉴에서 솔루션 빌드를 클릭합니다.

    솔루션을 빌드할 때 서버 프로젝트의 개체 및 설정에 대한 정의가 포함된 SharedServerProject.dbschema 파일을 만듭니다. 이 파일은 이 연습의 뒷부분에서 참조하게 됩니다.

    다음에는 이 서버 프로젝트에 정의된 로그인을 사용하는 데이터베이스 프로젝트를 만듭니다.

복합 데이터베이스 프로젝트 만들기

데이터베이스 프로젝트를 만들려면

  1. 파일 메뉴에서 새로 만들기를 가리킨 다음 프로젝트를 클릭합니다.

    새 프로젝트 대화 상자가 나타납니다.

  2. 설치된 템플릿에서 데이터베이스 노드를 확장하고 SQL Server를 클릭합니다.

    참고

    Visual Studio Professional을 사용하는 경우에는 설치된 템플릿에서 데이터베이스 노드, SQL Server 노드를 차례로 확장한 다음 고급을 클릭합니다.

  3. 템플릿 목록에서 SQL Server 2008 데이터베이스 프로젝트를 클릭합니다.

  4. 이름에 CompositeDBProject를 입력합니다.

    위치솔루션 이름의 값은 변경할 필요가 없습니다.

  5. 솔루션용 디렉터리 만들기 확인란이 아직 선택되어 있지 않은 경우 선택합니다.

  6. 소스 제어에 추가 확인란이 아직 선택 취소되어 있지 않은 경우 선택 취소하고 확인을 클릭합니다.

    빈 데이터베이스 프로젝트가 솔루션에 추가되고 솔루션 탐색기에 나타납니다.

    다음에는 이 연습의 앞부분에서 정의한 서버 프로젝트의 출력에 대한 참조를 추가합니다.

서버 프로젝트에 참조를 추가하려면

  1. 솔루션 탐색기에서 CompositeDBProject 프로젝트의 노드를 확장하고 참조 노드를 클릭합니다.

  2. 프로젝트 메뉴에서 데이터베이스 참조 추가를 클릭합니다.

    참고

    1, 2단계를 수행하는 대신 참조 노드를 마우스 오른쪽 단추로 클릭하고 데이터베이스 참조 추가를 클릭해도 됩니다.

    데이터베이스 참조 추가 대화 상자가 나타납니다. 해당 솔루션에는 하나의 데이터베이스 프로젝트만 있으므로 **데이터베이스 프로젝트 스키마(.dbschema)**가 선택되어 있습니다.

  3. 찾아보기를 클릭합니다.

    데이터베이스 파일 선택 대화 상자가 나타납니다.

  4. 이 연습의 앞부분에서 만든 SharedServerProject.dbschema 파일을 지정합니다.

    예를 들어 다음 위치를 지정할 수 있습니다.

    My Documents\Visual Studio 2010\Projects\SharedServerProject\SharedServerProject\sql\debug\SharedServerProject.dbschema

  5. 열기를 클릭합니다.

    서버 프로젝트에서 만들어진 dbschema 파일에 대한 참조를 만드는 경우 기본적으로 이 참조는 "master" 리터럴을 사용하여 해당 개체를 참조하도록 설정됩니다. 데이터베이스 변수 값을 정의했으므로 이 참조는 복합 참조가 아닙니다. 참조가 나타내는 대상이 다른 데이터베이스인 경우에는 데이터베이스 변수만 정의하면 됩니다.

  6. 확인을 클릭합니다.

    서버 프로젝트에 참조가 추가됩니다. 이제 해당 서버 프로젝트에 정의된 모든 개체를 현재 데이터베이스 프로젝트에 정의된 것과 같이 사용할 수 있습니다.

    다음에는 데이터베이스 프로젝트에 사용자 개체를 추가합니다. 사용자 개체에서는 서버 프로젝트에 정의된 로그인을 사용합니다.

데이터베이스 프로젝트에 사용자를 추가하려면

  1. 보기 메뉴에서 데이터베이스 스키마 뷰를 클릭합니다.

  2. CompositeDBProject 노드, 보안 노드를 차례로 확장하고 사용자 노드를 마우스 오른쪽 단추로 클릭한 다음 추가를 가리키고 사용자를 클릭합니다.

    새 항목 추가 대화 상자가 나타납니다.

  3. 이름에 MyUser를 입력하고 추가를 클릭합니다.

    해당 사용자가 데이터베이스 프로젝트에 추가되고 스키마 뷰에 표시됩니다. Transact-SQL 편집기가 열리고 해당 사용자에 대한 정의가 표시됩니다.

  4. Transact-SQL 편집기에서 다음 예제와 일치하도록 사용자 정의를 업데이트합니다.

    CREATE USER [MyUser]
        FOR LOGIN [SharedLogin]
        WITH DEFAULT_SCHEMA = dbo;
    

    중요

    [SharedLogin]은 "서버 개체 및 설정을 가져오려면"이라는 절차 중 7단계에서 확인한 로그인으로 바꿔야 합니다.

  5. 파일 메뉴에서 MyUser.user.sql 저장을 클릭합니다.

    다음에는 데이터베이스 역할을 정의합니다.

데이터베이스 역할을 정의하려면

  1. 스키마 뷰에서 CompositeDBProject 노드, 보안 노드, 역할 노드를 차례로 확장합니다.

  2. 데이터베이스 역할 노드를 마우스 오른쪽 단추로 클릭하고 추가를 가리킨 다음 데이터베이스 역할을 클릭합니다.

    새 항목 추가 대화 상자가 나타납니다.

  3. 이름에 DbAccounting을 입력하고 추가를 클릭합니다.

    해당 역할이 데이터베이스 프로젝트에 추가되고 스키마 뷰에 표시됩니다. Transact-SQL 편집기가 열리고 해당 역할에 대한 정의가 표시됩니다.

  4. 파일 메뉴에서 DbAccounting.role.sql 저장을 클릭합니다.

    다음에는 데이터베이스 프로젝트에 대한 배포 속성을 구성합니다.

사용자를 새 데이터베이스 역할에 연결하려면

  1. 스크립트 노드, 배포 후 노드를 차례로 확장하고 Script.PostDeployment.sql을 두 번 클릭합니다.

    Transact-SQL 편집기가 열리고 배포 후 스크립트가 표시됩니다.

  2. 배포 후 스크립트의 맨 아래에 다음 Transact-SQL 문을 추가합니다.

    exec sp_addrolemember 'DbAccounting','MyUser';
    
  3. 파일 메뉴에서 Script.PostDeployment.sql 저장을 클릭합니다.

    다음에는 데이터베이스 프로젝트에 대한 배포 속성을 구성합니다.

데이터베이스 프로젝트를 배포용으로 구성하려면

  1. 솔루션 탐색기에서 CompositeDBProject(데이터베이스 프로젝트)를 클릭합니다.

  2. 프로젝트 메뉴에서 CompositeDBProject 속성을 클릭합니다.

    프로젝트의 속성이 표시됩니다.

  3. 배포 탭을 클릭합니다.

  4. 배포 작업 목록에서 배포 스크립트(.sql)를 만들고 데이터베이스에 배포를 클릭합니다.

  5. 대상 데이터베이스 설정에서 편집을 클릭하고 데이터베이스 프로젝트를 배포할 대상 서버 및 데이터베이스에 대한 연결을 지정합니다.

    참고

    로그인은 서버 개체를 가져온 원본 서버에 정의되어 있으므로 이 서버와 동일한 서버를 지정하지 않으면 배포가 실패합니다.

  6. 파일 메뉴에서 선택한 항목 저장을 클릭합니다.

    다음에는 데이터베이스 프로젝트를 빌드합니다.

데이터베이스 프로젝트를 빌드하려면

  • 빌드 메뉴에서 솔루션 빌드를 클릭합니다.

    프로젝트가 오류 없이 빌드됩니다.

    다음에는 데이터베이스 프로젝트를 대상 서버 및 데이터베이스에 배포합니다.

데이터베이스 프로젝트를 배포하려면

  • 빌드 메뉴에서 CompositeDBProject 배포를 클릭합니다.

    프로젝트가 오류 없이 배포됩니다.

프로젝트를 팀에서 사용할 수 있게 만들기(선택 사항)

프로젝트를 버전 제어에 추가하려면

  1. 솔루션 탐색기에서 CompositeDBProject 솔루션의 노드를 클릭합니다.

  2. 파일 메뉴에서 소스 제어를 가리킨 다음 소스 제어에 솔루션 추가를 클릭합니다.

    참고

    이 부분에서 사용자는 설치한 버전 제어 소프트웨어와 상호 작용합니다. 이 연습에서는 프로젝트를 Visual Studio Team Foundation Server에 추가하는 단계를 제공합니다. 다른 버전 제어 소프트웨어가 있는 경우 해당하는 단계로 바꿔야 합니다.

    Team Foundation Server를 사용하는 경우에는 Team Foundation Server에 연결 대화 상자가 나타납니다.

  3. Team Foundation Server에 연결에서 솔루션을 추가할 팀 프로젝트를 호스팅하는 서버를 클릭합니다.

    참고

    데이터베이스 프로젝트를 추가할 수 있는 팀 프로젝트가 없는 경우 프로젝트 계획 및 추적를 참조하십시오.

  4. 팀 프로젝트에서 데이터베이스 프로젝트를 추가할 팀 프로젝트를 클릭하고 확인을 클릭합니다.

    소스 제어에 CompositeDBProject 솔루션 추가 대화 상자가 나타납니다.

  5. 확인을 클릭하여 기본값을 적용합니다.

    데이터베이스 프로젝트와 해당 파일이 버전 제어에서 관리됩니다. 처음에는 데이터베이스 프로젝트와 해당 파일이 체크 아웃되어 있으므로 다른 팀 멤버가 이 프로젝트와 파일을 액세스할 수 있으려면 체크 인해야 합니다.

  6. 보기 메뉴에서 다른 창을 가리킨 다음 보류 중인 변경 내용을 클릭합니다.

    보류 중인 변경 내용 창이 나타납니다.

  7. 설명에 'Initial database project creation'을 입력합니다.

  8. 보류 중인 변경 내용 창의 도구 모음에서 체크 인을 클릭합니다.

    데이터베이스 프로젝트와 이 프로젝트에 포함된 파일이 체크 인될 때 체크 인 진행률 대화 상자가 나타납니다. 솔루션 탐색기의 아이콘이 변경되어 파일이 버전 제어에 체크 인되었다는 것을 나타냅니다.

다음 단계

데이터베이스 프로젝트가 버전 제어에 체크 인되어 있으면 팀 멤버가 데이터베이스 프로젝트를 계속 개발할 수 있습니다. 데이터베이스 개발자는 서버 프로젝트를 수정할 필요가 없습니다. 따라서 팀 멤버가 공유 개체를 볼 수만 있고 변경할 수는 없도록 사용 권한을 제한할 수 있습니다.

참고 항목

개념

공유 서버 개체를 참조하는 데이터베이스의 팀 개발 시작

데이터베이스 및 서버 프로젝트 개요

데이터베이스 팀 개발 시작

다른 데이터베이스를 참조하는 데이터베이스의 팀 개발 시작

SQLCLR 개체를 참조하는 데이터베이스의 팀 개발 시작