O comando Validar Versão do MDS falha com um erro de servidor no SQL Server 2012 e SQL Server 2014

Este artigo ajuda você a resolver o problema em que o comando Master Data Services (MDS) Validate Version falha com um erro de servidor no SQL Server 2012 e SQL Server 2014.

Versão original do produto:   SQL Server 2012, SQL Server 2014
Número KB original:   2711671

Sintomas

Considere o seguinte cenário:

  • Um administrador instala o Microsoft SQL Server 2012 ou SQL Server 2014 MDS e implanta o site do MDS usando uma nova conta de pool de aplicativos.

  • Mais tarde, navegue até o site do MDS e siga estas etapas:

    1. Clique na página Gerenciar Versões.

    2. Clique no comando Validar Versão na barra de ferramentas superior.

    3. Selecione a caixa de seleção Validar para Model.

    4. Você confirma o prompt Tem certeza de que deseja validar essa versão? e clique em OK.

Nesse cenário, você recebe a seguinte mensagem de erro na janela do navegador:

Erro do servidor no aplicativo '/'.
Ocorreu um erro durante o processamento do tipo de solicitação de mensagem "ValidationGetRequest". Confira detalhes de exceção para obter mais informações.
Descrição: ocorreu uma exceção não acarretada durante a execução da solicitação da Web atual. Revise o rastreamento de pilha para obter mais informações sobre o erro e de onde ele se originou no código.
Detalhes da exceção: Microsoft.MasterDataServices.WebUI.ServiceAdapterException: ocorreu um erro durante o processamento do tipo de solicitação de mensagem "ValidationGetRequest". Confira detalhes de exceção para obter mais informações.
Erro de origem:
Uma exceção não acarretada foi gerada durante a execução da solicitação da Web atual. As informações sobre a origem e o local da exceção podem ser identificadas usando o rastreamento de pilha de exceção abaixo.
Rastreamento de pilha:
[ServiceAdapterException: ocorreu um erro durante o processamento do tipo de solicitação de mensagem 'ValidationGetRequest'. Confira detalhes de exceção para obter mais informações.]
Microsoft.MasterDataServices.WebUI.ServiceAdapter.InspectResponseForErrors(MessageRequest request, MessageResponse response) +687
Microsoft.MasterDataServices.WebUI.ServiceAdapter.ExecuteRequest(MdmServiceOperation 2 operation, TRequestType request) +75
Microsoft.MasterDataServices.WebUI.ServiceAdapter.GetValidationStatus(Int32 versionInternalId, Entidade Nullable 1InternalId, 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

Observação

Um problema semelhante pode ocorrer quando um aplicativo .NET Framework Microsoft personalizado usa a classe de API MDS ValidationGetRequest. Esse problema está documentado em: ValidationGetRequest Class.

Motivo

Esse problema ocorre porque novas contas não são concedidas à VIEW SERVER STATE permissão.

Quando você usa o utilitário Master Data Services Configuration Manager para criar um site do MDS, a ferramenta solicita as credenciais da conta de usuário do pool de aplicativos para a identidade do pool de aplicativos.

Em seguida, depois que o servidor e o banco de dados do MDS são selecionados, a ferramenta concede permissões à conta. A conta de credencial do pool de aplicativos especificada recebe várias permissões no banco de dados MDS especificado e é adicionada ao grupo de usuários locais e à função de banco de dados no catálogo de banco de dados MDS_ServiceAccounts mds_exec MDS especificado.

No entanto, VIEW SERVER STATE a permissão não é concedida ao banco de dados mestre. Às vezes, as contas do Windows podem ter essa permissão SQL Server. No entanto, por padrão, novas contas não são concedidas a essa permissão.

A permissão é útil para consultar o agente de serviço usando o modo de exibição de gerenciamento dinâmico VIEW SERVER STATE (DMV) para verificar o andamento da atividade em segundo plano em sys.dm_broker_activated_tasks fila.

O aplicativo Web MDS executa internamente o procedimento armazenado do exec mdm.udpValidationIsRunning para verificar o andamento da validação. No entanto, a credencial do pool de aplicativos que está executando a consulta não tem permissões para o DMV e recebe a seguinte mensagem de erro:

O usuário não tem permissão para executar essa ação.

A instrução a seguir dentro do procedimento falha e a página da Web não é renderizada:

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

Solução alternativa

Para resolver esse problema, use uma conta membro da função de servidor fixa do administrador do sistema para conceder permissões manualmente à conta designada para executar o pool de aplicativos MDS.

Por exemplo, para conceder manualmente as permissões, execute os seguintes comandos:

USE Master;

GO

GRANT VIEW SERVER STATE TO <domain\MdsWebAppAccount>;

Observação

O espaço reservado <domain\MdsWebAppAccount> representa a conta correta para sua configuração.

Mais informações

Para determinar se esse problema está relacionado à permissão, execute um rastreamento SQL Profiler e procure a seguinte mensagem de erro ao executar as instruções conforme descrito na VIEW SERVER STATE seção Causa:

O usuário não tem permissão para executar essa ação.

Em seguida, verifique a conta para permissões efetivas e adicione as permissões, se for necessário. Para fazer isso, siga estas etapas:

  1. Abra o Management Studio e conecte-se ao mecanismo SQL Server banco de dados que está hospedando o catálogo MDS.

  2. No painel Explorador de Objetos, expanda a pasta Segurança.

  3. Localize a conta usada para executar o pool de aplicativos MDS do IIS.

  4. Clique com o botão direito do mouse na conta e clique em Propriedades.

  5. Clique na página Securables. No painel inferior, clique na guia Efetiva.

    • Se a permissão efetiva VIEW SERVER STATE estiver listada, isso provavelmente não será o problema.

    • Se a permissão não estiver listada, retorne à guia Explícita na caixa de diálogo Propriedades de Logon e clique para selecionar a caixa de seleção Exibir Permissões de Estado do Servidor para conceder permissões à conta.

Referências

Para obter mais informações sobre como usar o aplicativo Web do Gerenciador de Dados Mestre para validar dados, consulte: