O comando MDS Validate Version falha com um erro do servidor no SQL Server 2012 e SQL Server 2014

Este artigo ajuda você a resolve o problema em que o comando versão de validação de Master Data Services (MDS) falha com um erro de servidor em SQL Server 2012 e SQL Server 2014.

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

Sintomas

Considere o seguinte cenário:

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

  • Posteriormente, 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 Validar marcar para Modelo.

    4. Você confirma se deseja validar essa versão? prompt e clique em OK.

Nesse cenário, você receberá 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'. Consulte detalhes de exceção para obter mais informações.
Descrição: ocorreu uma exceção sem tratamento durante a execução da solicitação web atual. Examine 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 ao processar o tipo de solicitação de mensagem 'ValidationGetRequest'. Consulte detalhes de exceção para obter mais informações.
Erro de origem:
Uma exceção sem tratamento foi gerada durante a execução da solicitação web atual. 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 ao processar o tipo de solicitação de mensagem 'ValidationGetRequest'. Consulte detalhes de exceção para obter mais informações.]
Microsoft.MasterDataServices.WebUI.ServiceAdapter.InspectResponseForErrors(solicitação MessageRequest, resposta MessageResponse) +687
Operação Microsoft.MasterDataServices.WebUI.ServiceAdapter.ExecuteRequest(operação MdmServiceOperation 2, solicitação 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.AssessSelectedVersion() +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 microsoft .NET Framework personalizado usa a classe de API MDS ValidationGetRequest. Esse problema está documentado em: Classe ValidationGetRequest.

Motivo

Esse problema ocorre porque novas contas não recebem a VIEW SERVER STATE permissão.

Quando você usa o utilitário Gerenciador de Configuração do Master Data Services 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 MDS e o banco de dados forem selecionados, a ferramenta concederá 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 MDS_ServiceAccounts grupo de usuários locais e à função de mds_exec banco de dados no catálogo de banco de dados MDS especificado.

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

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

O aplicativo Web MDS executa internamente o procedimento armazenado exec mdm.udpValidationIsRunning para marcar o progresso 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 seguinte instrução 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 contornar esse problema, use uma conta que é membro da função de servidor fixa do administrador do sistema para conceder manualmente permissões à 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 domínio de espaço reservado <\MdsWebAppAccount> representa a conta correta para sua configuração.

Mais informações

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

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

Em seguida, marcar 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 de banco de dados SQL Server que está hospedando o catálogo do MDS.

  2. No painel Pesquisador 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 Protecionáveis . No painel inferior, clique na guia Efetivo .

    • Se a permissão VIEW SERVER STATE efetiva estiver listada, esse 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 Exibir Permissões de Estado do Servidor marcar para conceder permissões à conta.

Referências

Para obter mais informações sobre como usar o aplicativo Web do Master Data Manager para validar dados, consulte: