연습: SQL CLR 개체를 사용하는 데이터베이스 프로젝트 만들기 및 배포

SQL CLR(SQL Server 공용 언어 런타임) 어셈블리를 사용하는 데이터베이스를 만들어 배포하려면 데이터베이스 프로젝트와 SQL CLR 프로젝트를 만듭니다. 데이터베이스 프로젝트를 빌드하여 배포하면 해당 프로젝트에서 참조하는 SQL CLR 어셈블리도 동시에 자동으로 배포됩니다.

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

  • 간단한 데이터베이스 프로젝트를 만듭니다.

  • SQL CLR 프로젝트를 만들고 새 데이터 형식을 정의합니다.

  • SQL CLR 어셈블리에 정의한 형식을 사용합니다.

  • 데이터베이스 프로젝트를 빌드하고 배포합니다.

사전 요구 사항

이 연습을 완료하려면 Visual Studio 2010 Premium이 설치되어 있어야 합니다. SQL Server 2005 또는 SQL Server 2008의 인스턴스에 대한 액세스 권한이 있어야 합니다. CodePlex 웹 사이트에서 제공하는 SQL Server용 코드 샘플이 설치되어 있어야 합니다. 데이터베이스 서버에 데이터베이스를 배포할 수 있는 권한이 있어야 합니다.

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

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

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

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

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

    참고

    Visual Studio 2010 Professional을 사용하는 경우 고급 노드를 확장한 다음 SQL Server를 클릭해야 합니다.

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

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

    중요

    위치솔루션 이름에서 기본값을 변경하지 마십시오.

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

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

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

    다음에는 SQL CLR 어셈블리에 대한 프로젝트를 만듭니다.

SQL CLR 프로젝트 만들기

SQL CLR 프로젝트를 만들려면

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

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

  2. 프로젝트 형식에서 데이터베이스 노드를 확장하고 SQL Server를 클릭합니다.

  3. 템플릿 목록에서 Visual Basic SQL CLR 데이터베이스 프로젝트 서버 프로젝트 또는 Visual C# SQL CLR 데이터베이스 프로젝트를 클릭합니다.

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

  5. 확인을 클릭하여 기본 위치를 적용한 상태로 대화 상자를 닫고 프로젝트를 만듭니다.

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

  6. 데이터베이스 참조 추가 대화 상자에서 취소를 클릭합니다.

    취소를 클릭하면 데이터베이스 프로젝트에서 어셈블리가 배포될 위치를 확인할 수 있습니다.

    다음에는 SQL CLR 어셈블리에 사용자 지정 데이터 형식을 만듭니다.

사용자 지정 SQL CLR 데이터 형식을 정의하려면

  1. 프로젝트 메뉴에서 사용자 정의 형식 추가를 클릭합니다.

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

  2. 이름에 MyCustomType.cs를 입력합니다.

    코드 편집기가 열리고 MyCustomType.cs의 내용이 표시됩니다.

    참고

    이 시점에서 기본 사용자 정의 형식을 수정하여 요구 사항을 충족하는 구현을 제공해야 합니다. 이 연습에서는 기본 구현을 그대로 적용합니다. 사용자 지정 형식 및 기타 SQL CLR 개체를 정의하는 방법에 대한 자세한 내용은 Microsoft 웹 사이트의 Using CLR Integration in SQL Server 2005 항목을 참조하십시오.

  3. 파일 메뉴에서 MyCustomType.cs 저장을 클릭합니다.

SQL CLR 어셈블리를 구성하고 빌드하려면

  1. 빌드 메뉴에서 구성 관리자를 클릭합니다.

    구성 관리자 대화 상자가 나타납니다.

  2. 프로젝트 컨텍스트에서 SupportingSQLClrObjects 어셈블리 행에 있는 배포 확인란의 선택을 취소합니다.

    이 확인란의 선택을 취소하면 솔루션을 배포할 때 해당 어셈블리는 배포되지 않습니다. 이 어셈블리는 데이터베이스 프로젝트와 함께 배포되므로 어셈블리를 두 번 배포할 필요가 없습니다.

  3. 닫기를 클릭합니다.

  4. 솔루션 탐색기에서 SupportingSQLClrObjects 프로젝트를 마우스 오른쪽 단추로 클릭하고 빌드를 클릭합니다.

    어셈블리가 오류 없이 빌드됩니다.

    다음에는 새 어셈블리를 참조하고 해당 어셈블리에 정의한 형식을 사용합니다.

SQL CLR 어셈블리에 정의한 형식 사용

SQCLR 어셈블리에 정의한 형식을 사용하려면 데이터베이스 프로젝트에서 해당 어셈블리에 대한 참조를 추가해야 합니다. 그런 다음 데이터베이스 프로젝트에서 해당 데이터 형식을 정의하여 이 새 데이터 형식을 개체 정의에서 사용할 수 있도록 합니다.

SQL CLR 어셈블리에 대한 참조를 추가하려면

  1. 솔루션 탐색기에서 SQLClrDatabaseSandbox 프로젝트를 확장하고 참조 노드를 마우스 오른쪽 단추로 클릭한 다음 참조 추가를 클릭합니다.

    참고

    솔루션 탐색기에서 SQLClrDatabaseSandbox 프로젝트를 클릭하고 프로젝트 메뉴를 연 다음 참조 추가를 클릭해도 됩니다.

    참조 추가 대화 상자가 열립니다.

  2. 프로젝트 탭에서 SupportingSQLClrObjects 프로젝트가 강조 표시되어 있는지 확인하고 확인을 클릭합니다.

    SQL CLR 프로젝트에 대한 참조가 데이터베이스 프로젝트에 추가됩니다.

  3. 솔루션 탐색기에서 참조 노드를 확장하고 SupportingSQLClrObjects 노드를 클릭한 다음 F4 키를 누릅니다.

    참조 속성이 표시됩니다.

  4. 로컬 복사True로 설정되어 있고 권한 수준안전으로 설정되어 있는지 확인합니다.

  5. 어셈블리 이름 속성에서 SqlClassLibrary를 SupportingSQLClrObjects로 바꿉니다.

  6. 소유자 속성에 dbo를 입력합니다.

    다른 소유자를 지정할 수도 있습니다.

  7. 파일 메뉴에서 모두 저장을 클릭합니다.

    지정한 속성은 프로젝트를 빌드할 때 만들어지는 CREATE ASSEMBLY 문을 제어합니다.

    다음에는 SQL CLR 프로젝트에서 생성하는 어셈블리를 사용하는 데이터 형식을 정의합니다.

새 데이터 형식을 정의하려면

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

  2. SQLClrDatabaseSandbox 노드, 스키마 노드, dbo 노드 및 프로그램 기능 노드를 차례로 확장합니다.

  3. 형식 노드를 마우스 오른쪽 단추로 클릭하고 추가를 가리킨 다음 사용자 정의 형식 CLR을 클릭합니다.

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

  4. 템플릿에서 **사용자 정의 형식(CLR)**이 강조 표시되어 있는지 확인합니다.

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

    Transact-SQL 편집기가 나타나고 해당 형식에 대한 정의가 표시됩니다. 오류 목록 창에는 다음 오류가 나타납니다.

SR0029 : Microsoft.Validation : User Defined Type: [dbo].[MyCustomType] has an unresolved reference to Assembly [assembly_name]
  1. Transact-SQL 편집기에서 다음과 일치하도록 코드를 업데이트합니다.

    CREATE TYPE [dbo].[MyCustomType]
    EXTERNAL NAME [SupportingSQLClrObjects].[MyCustomType]
    
  2. 파일 메뉴에서 MyCustomType.udtclr.sql 저장을 클릭합니다.

    유효한 어셈블리 및 클래스를 참조하도록 형식 정의를 업데이트했으므로 오류 목록 창에서 해당 오류가 사라집니다.

    다음에는 새 데이터 형식을 사용하는 간단한 테이블을 정의합니다.

테이블 정의에서 새 데이터 형식을 사용하려면

  1. 스키마 뷰에서 스키마 노드, dbo 노드를 차례로 엽니다.

  2. 테이블 노드를 마우스 오른쪽 단추로 클릭하고 추가를 가리킨 다음 테이블을 클릭합니다.

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

  3. 템플릿에서 테이블이 강조 표시되어 있는지 확인합니다.

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

    Transact-SQL 편집기가 나타나고 해당 테이블에 대한 정의가 표시됩니다.

  5. Transact-SQL 편집기에서 다음과 일치하도록 코드를 업데이트합니다.

    CREATE TABLE [dbo].[SimpleTable]
    (
    column_1 int NOT NULL, 
    column_2 [dbo].[MyCustomType] NULL
    )
    
  6. 파일 메뉴에서 dbo.SimpleTable.table.sql 저장을 클릭합니다.

    다음에는 데이터베이스 프로젝트를 구성한 다음 격리된 개발 환경에 배포합니다.

데이터베이스 프로젝트 빌드 및 배포

빌드 설정을 구성하려면

  1. 솔루션 탐색기에서 SQLClrDatabaseSandbox를 클릭합니다.

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

  3. 빌드 탭을 클릭하고 기본 설정을 검토합니다.

    이 연습에서는 기본 설정을 사용할 수 있습니다.

    다음에는 배포 설정을 구성합니다.

배포 설정을 구성하려면

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

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

  3. 배포 설정 구성 목록에서 내 격리된 개발 환경을 클릭합니다.

    이 설정을 지정하면 격리된 개발 환경에만 영향을 주는 값이 구성됩니다. 데이터베이스 프로젝트의 설정은 변경하지 않습니다.

  4. 배포 스크립트 이름에서 기본값을 그대로 둡니다.

  5. 대상 데이터베이스 설정에서 편집을 클릭하여 대상 연결을 지정합니다.

  6. 연결 속성 대화 상자에서 데이터베이스 프로젝트를 배포할 서버 및 데이터베이스에 대한 연결을 지정하고 확인을 클릭합니다.

  7. 대상 데이터베이스 이름에서 기본값을 그대로 둡니다.

  8. 배포 구성 파일 목록에서 Properties\Database.deploymentconfig를 클릭합니다.

    기본적으로 격리된 개발 환경에는 세부적인 배포 설정이 연결되어 있지 않습니다. 이 파일을 지정하면 해당 데이터베이스 프로젝트와 연결된 배포 설정을 사용하게 됩니다. 또한 별도의 구성 파일을 만들어 격리된 개발 환경의 설정을 수정할 수도 있습니다.

  9. SQL 명령 변수 파일 목록에서 Properties\Database.deploymentconfig를 클릭합니다.

  10. 파일 메뉴에서 모두 저장을 클릭합니다.

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

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

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

    데이터베이스 프로젝트와 SQL CLR 어셈블리 프로젝트가 올바르게 빌드됩니다.

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

    데이터베이스 프로젝트와 SQL CLR 어셈블리가 배포 설정에서 지정한 대상 서버 및 데이터베이스에 배포됩니다. 출력 창에 다음 메시지가 나타납니다.

    ========== 배포: 성공 1, 실패 0, 생략 1 ==========.

    데이터베이스 프로젝트가 성공적으로 배포되었습니다. 데이터베이스 프로젝트를 배포할 때 SQL CLR 어셈블리도 배포되었습니다. SQL CLR 어셈블리는 별도로 배포할 필요가 없으며 따라서 솔루션을 배포할 때 생략한 것입니다.

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

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

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

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

    이 부분에서 사용자는 설치된 버전 제어 소프트웨어와 상호 작용합니다. 이 연습에서는 프로젝트를 Visual Studio Team Foundation Server에 추가하는 단계를 제공합니다. 다른 버전 제어 소프트웨어를 사용하려면 해당하는 단계로 바꿉니다. Team Foundation Server를 사용하는 경우에는 Team Foundation Server에 연결 대화 상자가 나타납니다.

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

    참고

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

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

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

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

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

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

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

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

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

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

다음 단계

다음에는 데이터베이스 단위 테스트와 데이터 생성 계획을 만들어 어셈블리를 테스트할 수 있습니다. 자세한 내용은 데이터베이스 프로젝트 구성 및 테스트 개발 수행을 참조하십시오.

참고 항목

개념

데이터베이스 팀 개발 시작

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

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

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

Visual Studio의 데이터베이스 기능에 필요한 권한