데이터 웨어하우스에서 발생하는 스키마 충돌 해결

보고 가능 필드의 특성 집합이 팀 프로젝트 컬렉션마다 다를 경우 스키마 충돌이 발생합니다. 스키마 충돌 발생 시 충돌하지 않는 필드는 일반적으로 처리하지만 충돌을 해결하면 평소처럼 처리 되고 충돌이 생기면 필드에 null 값이 할당 됩니다. 또한 시스템에서 검색되는 각 충돌에 대한 알림 이벤트가 생성됩니다. 이제 이벤트를 구독하여 컬렉션에 대해 정의된 팀 프로젝트들에 해당하는 스키마 충돌이 발생하는 경우 경고를 받을 수 있습니다. 모든 스키마 충돌을 수정하여 웨어하우스에 대한 관련 데이터 처리의 차단을 해제하고 관련 보고서에 현재 데이터를 표시할 수 있도록 해야 합니다.

Visual Studio Team Foundation Server의 배포에 대해 모든 프로젝트 컬렉션에서 정의되는 모든 팀 프로젝트의 모든 보고 가능 데이터는 단일 관계형 데이터 웨어하우스에 기록됩니다. 그러면 해당 웨어하우스의 데이터가 처리되어 큐브에 기록됩니다. 데이터를 단일 데이터 웨어하우스에 수집하면 팀 프로젝트 컬렉션 간의 보고가 지원됩니다. 하지만 필드는 각 프로젝트 컬렉션에 대해 개별적으로 관리되기 때문에 동일한 보고 참조 이름이 할당된 필드의 특성 하나 이상에 다른 정의를 할당하면 스키마 충돌이 발생할 수 있습니다.

항목 내용

  • 스키마 충돌을 알리는 오류 메시지

  • 스키마 충돌의 소스

  • 스키마 충돌 해결

  • 스키마 충돌이 해결되었는지 확인

스키마 충돌을 알리는 오류 메시지

스키마 충돌이 발생하면 다음 위치에 오류 메시지가 나타납니다.

  • 응용 프로그램 계층 서버에 대한 이벤트 로그

    참고

    Team Foundation Server에서는 데이터 충돌이 해결될 때까지 매일 오류 메시지를 이벤트 로그에 기록합니다.

  • MSF 프로세스 템플릿이 제공되고 보고서 관리자를 통해 보는 보고서

  • MSF 프로세스 템플릿이 제공되고 프로젝트 포털을 통해 보는 대시보드

    참고

    각 보고서와 대시보드의 오른쪽 아래 모퉁이에 나타나는 마지막 업데이트 날짜 타임스탬프를 찾으면 보고서나 대시보드가 가장 최근에 업데이트된 시간을 확인할 수 있습니다.타임스탬프는 모든 프로젝트 컬렉션에 대해 완료하도록 예약된 모든 웨어하우스 어댑터 작업이 성공적으로 처리를 완료한 가장 최근 시간에 해당합니다.타임스탬프 계산은 사용자 지정 어댑터 작업을 포함하며 Warehouse Control 웹 서비스 실행이 차단된 어댑터 작업을 무시합니다.

    스키마 충돌 때문에 보고서에 대한 데이터 웨어하우스에 데이터를 입력하는 작업이 차단되면 보고서에 대한 타임스탬프는 업데이트되지 않습니다.

위의 메시지 외에도, Warehouse Control 웹 서비스의 GetProcessingStatus 작업을 사용하여 추가 정보를 얻을 수 있습니다. 자세한 내용은 Team Foundation Server에 대한 데이터 웨어하우스 및 분석 서비스 큐브 수동 처리를 참조하십시오.

스키마 충돌의 소스

프로젝트 관리자가 다음 작업 중 하나를 수행할 때 스키마 충돌이 발생합니다.

  • 보고 가능 필드를 한 프로젝트 컬렉션의 작업 항목 형식에 추가하고, 해당 필드에 할당된 특성이 다른 프로젝트 컬렉션의 특성과 일치하지 않습니다.

  • 해당 변경 내용이 다른 컬렉션의 할당과 충돌하더라도 하나 이상의 프로젝트 컬렉션에서 사용되는 작업 항목 필드에 할당된 특성을 변경합니다.

    참고

    프로젝트 관리자가 배포에서 여러 프로젝트 컬렉션 간에 정의된 필드의 특성 할당을 검토해야만 위 목록의 오류를 방지할 수 있습니다.

한 필드가 여러 프로젝트 컬렉션에서 동일한 참조 이름 또는 동일한 보고 참조 이름을 사용하고 해당 필드의 다음 특성 중 하나 이상이 둘 이상의 컬렉션에서 일치하지 않는 경우 오류가 발생합니다.

  • name: 작업 항목 쿼리를 만들 때 옵션으로 나타나는 필드의 이름입니다.

  • reportingname: 보고서에 나타나는 이름입니다. 값을 지정하지 않으면 name 특성에 할당된 값이 사용됩니다.

  • reportable/reportingtype: 필드의 데이터를 보고서에 포함할 수 있는지 여부와 가능한 경우 보고 가능 형식입니다(예: None, Detail, Dimension 또는 Measure).

    참고

    FIELD 요소는 reportable 특성을 사용했으며 witadmin changefield 명령은 reportingtype 특성을 사용합니다.이러한 특성은 동일한 정보를 정의합니다.

  • type: 필드에 입력할 수 있는 데이터의 형식입니다(예: Integer, HTML, String, Double 또는 DateTime).

다음 표에서는 스키마 충돌이 발생하는 특성 할당의 예를 보여 줍니다. 이 예에서는 보고 참조 이름과 보고 이름이 할당되지 않습니다.

특성

프로젝트 컬렉션 1

프로젝트 컬렉션 2

스키마 충돌

형식

String

정수

데이터 형식이 일치하지 않습니다.

ReportingName

작업

공통 작업

보고 이름이 일치하지 않습니다.

보고 가능

Detail

크기

보고 형식이 일치하지 않습니다.

스키마 충돌 해결

응용 프로그램 계층 서버에서 이벤트 로그를 검토하여 스키마 충돌을 일으키는 필드에 대한 추가 정보를 얻을 수 있습니다. 충돌을 일으키는 필드를 확인한 후 다음 단계를 수행해야 합니다.

  1. 모든 프로젝트 컬렉션에서 필드에 할당된 특성을 검토합니다. 다음 구문을 사용하는 witadmin listfields 명령을 사용할 수 있습니다.

    witadmin listfields /collection:CollectionURL /n:RefName [/unused]
    

    자세한 내용은 작업 항목 필드 관리[witadmin]을 참조하십시오.

  2. 다음 방법 중 어느 방법으로 충돌을 해결할지를 결정합니다.

    • 다른 프로젝트 컬렉션에서 만든 할당과 일치하도록 한 프로젝트 컬렉션에서 필드의 특성을 변경합니다. 팀이 비슷한 보고서에서 동일한 방법으로 필드를 사용하는 경우 또는 크로스 프로젝트 보고의 경우 이 작업을 수행해야 합니다.

    • 충돌하는 필드의 보고 참조 이름 레이블을 다시 지정합니다. 필드가 다른 방법으로 사용되거나 다른 필드를 유지해야 하는 경우 이 작업을 수행해야 합니다. 이 경우 크로스 프로젝트 보고를 위해 다른 프로젝트 컬렉션에서 작업하는 팀에서는 필드를 사용하지 않습니다.

      자세한 내용은 보고를 지원하도록 작업 항목 필드 추가 또는 수정을 참조하십시오.

    • 필드를 하나 이상의 컬렉션에 대해 보고 불가능으로 만듭니다. 해당 프로젝트 컬렉션에 대한 보고서에 필드가 사용되지 않는 경우 이 작업을 수행해야 합니다.

    • 팀 프로젝트 컬렉션에서 필드를 제거합니다. 팀 프로젝트나 보고서에 필드가 사용되지 않는 경우 이 작업을 수행해야 합니다.

      참고

      보고서에 사용되는 필드를 제거하면 보고서는 더 이상 올바르게 표시되지 않습니다.

  3. 이전 단계에서 내린 결정을 기준으로 필드에 할당된 특성을 변경합니다. 다음 구문을 사용하는 witadmin changefield 명령을 사용할 수 있습니다.

    witadmin changefield /collection:CollectionURL /n:RefName [/name:NewName] [/syncnamechanges:true | false] [/reportingname:ReportingName] [/reportingrefname:ReportingRefName] [/reportingtype:Type] [/reportingformula:Formula] [/noprompt]
    
  4. 프로젝트 컬렉션에서 필드를 삭제하려면 다음 구문을 사용하는 witadmin deletefield 명령을 사용할 수 있습니다.

    witadmin deletefield /collection:CollectionURL /n:RefName
    

    중요

    필드를 영구적으로 삭제하면 필드와 필드에 저장된 모든 데이터가 데이터 저장소에서 제거됩니다.

스키마 충돌이 해결되었는지 확인

요청 시 데이터 웨어하우스를 처리한 다음 보고서가 업데이트되는지 확인하여 스키마 충돌이 해결되었는지 확인할 수 있습니다. 기본 일정에 따라 웨어하우스 어댑터 작업이 실행될 때까지 기다릴 수도 있습니다. 기본적으로 몇 분마다 관계형 데이터베이스가 처리됩니다. 하지만 Analysis Services 큐브는 기본적으로 두 시간마다 처리됩니다.

참고

Warehouse Control 웹 서비스에 대한 자세한 내용은 TFS 데이터 웨어하우스 및 Analysis Services 큐브 수동 처리를 참조하십시오.

  1. WarehouseControlServiceProcessWarehouse 작업을 사용하여 요청 시 관계형 데이터 웨어하우스를 처리합니다.

  2. WarehouseControlServiceProcessAnalysisDatabase 작업을 사용하여 요청 시 큐브를 처리합니다.

  3. 대시 보드 또는 보고서 관리자를 열고 보고서가 업데이트되는지 확인합니다. 자세한 내용은 대시보드 또는 보고서(SQL Server Reporting Services)를 참조하십시오.

오류 메시지가 계속 나타나면 WarehouseControlServiceGetProcessingStatus 작업을 실행하여 데이터 충돌과 해당되는 차단된 어댑터에 대한 추가 정보를 얻을 수 있습니다.

참고 항목

참조

작업 항목 필드 관리[witadmin]

개념

보고를 지원하도록 작업 항목 필드 추가 또는 수정

Visual Studio ALM 보고서 만들기, 사용자 지정 및 관리

기타 리소스

TFS 데이터 웨어하우스 및 Analysis Services 큐브 수동 처리