다음을 통해 공유


2012년 SQL Server 및 2014년 SQL Server 서버 오류로 인해 MDS 버전 유효성 검사 명령이 실패함

이 문서는 SQL Server 2012 및 SQL Server 2014에서 서버 오류로 인해 MDS(MDS(Master Data Services)) 버전 유효성 검사 명령이 실패하는 문제를 resolve 데 도움이 됩니다.

원래 제품 버전: SQL Server 2012, SQL Server 2014
원래 KB 번호: 2711671

증상

다음과 같은 경우를 생각해볼 수 있습니다.

  • 관리자는 Microsoft SQL Server 2012 또는 SQL Server 2014 MDS를 설치한 다음 새 애플리케이션 풀 계정을 사용하여 MDS 웹 사이트를 배포합니다.

  • 나중에 MDS 웹 사이트로 이동한 다음 다음 단계를 수행합니다.

    1. 버전 관리 페이지를 클릭합니다.

    2. 위쪽 도구 모음에서 버전 유효성 검사 명령을 클릭합니다.

    3. 모델에 대한 검사 유효성 검사 상자를 선택합니다.

    4. 이 버전의 유효성을 검사하시겠습니까? 프롬프트를 확인하고 확인을 클릭합니다.

이 시나리오에서는 브라우저 창에서 다음 오류 메시지가 표시됩니다.

'/' 애플리케이션의 서버 오류입니다.
메시지 요청 형식 'ValidationGetRequest'를 처리하는 동안 오류가 발생했습니다. 자세한 내용은 예외 세부 정보를 참조하세요.
설명: 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 오류 및 코드에서 발생한 위치에 대한 자세한 내용은 스택 추적을 검토하세요.
예외 세부 정보: Microsoft.MasterDataServices.WebUI.ServiceAdapterException: 메시지 요청 형식 'ValidationGetRequest'를 처리하는 동안 오류가 발생했습니다. 자세한 내용은 예외 세부 정보를 참조하세요.
원본 오류:
현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 생성되었습니다. 예외의 원본 및 위치에 대한 정보는 아래 예외 스택 추적을 사용하여 식별할 수 있습니다.
스택 추적:
[ServiceAdapterException: 메시지 요청 형식 'ValidationGetRequest'를 처리하는 동안 오류가 발생했습니다. 자세한 내용은 예외 세부 정보를 참조하세요.]
Microsoft.MasterDataServices.WebUI.ServiceAdapter.InspectResponseForErrors(MessageRequest request, MessageResponse response) +687
Microsoft.MasterDataServices.WebUI.ServiceAdapter.ExecuteRequest(MdmServiceOperation 2 작업, TRequestType 요청) +75
Microsoft.MasterDataServices.WebUI.ServiceAdapter.GetValidationStatus(Int32 versionInternalId, Nullable 1 entityInternalId, Nullable 1 memberType, String notificationUserName, IList 1 memberIds, Boolean omitSummary, Boolean omitIssuesList, Int32 pageNumber, Int32 pageSize, String sortColumn, SortDirection sortDirection) +678
Microsoft.MasterDataServices.WebUI.ServiceAdapter.GetValidationStatus(Int32 versionInternalId, Int32 pageNumber, Int32 pageSize, String sortColumn, SortDirection sortDirection) +133
Microsoft.MasterDataServices.WebUI.Common.Validations.LoadGrid() +355
Microsoft.MasterDataServices.WebUI.Audit.Dimensions.LoadGrid() +26
Microsoft.MasterDataServices.WebUI.Audit.Dimensions.EvaluateSelectedVersion() +267
Microsoft.MasterDataServices.WebUI.Audit.Dimensions.OnLoad(EventArgs e) +776
System.Web.UI.Control.LoadRecursive() +71
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3064

참고

사용자 지정 Microsoft .NET Framework 애플리케이션에서 MDS API 클래스 ValidationGetRequest를 사용하는 경우에도 비슷한 문제가 발생할 수 있습니다. 이 문제는 ValidationGetRequest 클래스에 설명되어 있습니다.

원인

이 문제는 새 계정에 권한이 부여 VIEW SERVER STATE 되지 않았기 때문에 발생합니다.

Master Data Services 구성 관리자 유틸리티를 사용하여 MDS 웹 사이트를 만들면 도구에서 애플리케이션 풀 ID에 대한 애플리케이션 풀 사용자 계정 자격 증명을 묻는 메시지를 표시합니다.

다음으로 MDS 서버 및 데이터베이스를 선택한 후 도구는 계정에 권한을 부여합니다. 지정된 애플리케이션 풀 자격 증명 계정에는 지정된 MDS 데이터베이스에 여러 권한이 부여되고 로컬 사용자 그룹 및 지정된 MDS 데이터베이스 카탈로그 내의 mds_exec 데이터베이스 역할에 추가 MDS_ServiceAccounts 됩니다.

그러나 VIEW SERVER STATE master 데이터베이스에 대한 권한은 부여되지 않습니다. 경우에 따라 Windows 계정에는 SQL Server 해당 권한이 있을 수 있습니다. 그러나 기본적으로 새 계정에는 해당 권한이 부여되지 않습니다.

이 권한은 VIEW SERVER STATE DMV(동적 관리 뷰)를 사용하여 sys.dm_broker_activated_tasks 대기 중인 백그라운드 작업의 진행률을 검사 서비스 브로커를 쿼리하는 데 유용합니다.

MDS 웹 애플리케이션은 내부적으로 exec mdm.udpValidationIsRunning 저장 프로시저를 실행하여 유효성 검사 진행률을 검사. 그러나 쿼리를 실행하는 애플리케이션 풀 자격 증명에는 DMV에 대한 권한이 없으며 다음 오류 메시지가 표시됩니다.

사용자에게 이 작업을 수행할 수 있는 권한이 없습니다.

프로시저 내의 다음 문이 실패하고 웹 페이지가 렌더링되지 않습니다.

IF EXISTS (SELECT 1 FROM sys.dm_broker_activated_tasks
    WHERE procedure_name = N'[mdm].[udpValidationQueueActivate]')

해결 방법

이 문제를 해결하려면 시스템 관리자 고정 서버 역할의 멤버인 계정을 사용하여 MDS 애플리케이션 풀을 실행하도록 지정된 계정에 권한을 수동으로 부여합니다.

예를 들어 수동으로 권한을 부여하려면 다음 명령을 실행합니다.

USE Master;

GO

GRANT VIEW SERVER STATE TO <domain\MdsWebAppAccount>;

참고

자리 표시자 <도메인\MdsWebAppAccount> 는 구성에 대한 올바른 계정을 나타냅니다.

추가 정보

이 문제가 권한과 관련이 VIEW SERVER STATE 있는지 확인하려면 SQL Profiler 추적을 실행한 다음 원인 섹션에 설명된 대로 문을 실행할 때 다음 오류 메시지를 찾습니다.

사용자에게 이 작업을 수행할 수 있는 권한이 없습니다.

그런 다음, 유효한 권한에 대한 계정을 검사 필요한 경우 권한을 추가합니다. 이렇게 하려면 다음과 같이 하십시오.

  1. Management Studio를 연 다음 MDS 카탈로그를 호스팅하는 SQL Server 데이터베이스 엔진에 연결합니다.

  2. 개체 탐색기 창에서 보안 폴더를 확장합니다.

  3. IIS MDS 애플리케이션 풀을 실행하는 데 사용되는 계정을 찾습니다.

  4. 계정을 마우스 오른쪽 단추로 클릭한 다음 속성을 클릭합니다.

  5. 보안 개체 페이지를 클릭합니다. 아래쪽 창에서 유효 탭을 클릭합니다.

    • 유효 권한이 VIEW SERVER STATE 나열되면 문제가 되지 않을 수 있습니다.

    • 권한이 나열되지 않은 경우 로그인 속성 대화 상자의 명시적 탭으로 돌아가서 서버 상태 권한 보기 검사 상자를 선택하여 계정에 권한을 부여합니다.

참조

Master Data Manager 웹 애플리케이션을 사용하여 데이터의 유효성을 검사하는 방법에 대한 자세한 내용은 다음을 참조하세요.