Partilhar via


O comando MDS Validate Version falha com um erro de servidor no SQL Server

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

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

Sintomas

Considere o cenário a seguir.

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

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

    1. Selecione a página Gerenciar Versões .

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

    3. Marque a caixa de seleção Validar para Modelo.

    4. Você confirma o aviso Tem certeza de que deseja validar esta versão? e então seleciona OK.

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

Erro de servidor no aplicativo '/'.
Ocorreu um erro durante o processamento do tipo de solicitação de mensagem 'ValidationGetRequest'. Consulte os detalhes da exceção para obter mais informações.
Descrição: ocorreu uma exceção sem tratamento durante a execução da solicitação da Web atual. Examine o rastreamento de pilha para obter mais informações sobre o erro e em que ponto ele ocorreu 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'. Consulte os detalhes da exceção para obter mais informações.
Erro de Fonte
Uma exceção sem tratamento 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 ao processar o tipo de solicitação de mensagem 'ValidationGetRequest'. Consulte os detalhes da exceção para obter mais informações.]
Microsoft.MasterDataServices.WebUI.ServiceAdapter.InspectResponseForErrors(Solicitação MessageRequest, resposta MessageResponse) +687
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.EvaluateSelectedVersion() +267
Microsoft.MasterDataServices.WebUI.Audit.Dimensions.OnLoad(EventArgs e) +776
System.Web.UI.Control.LoadRecursive() +71
System.Web.UI.Page.ProcessRequestMain(Boolean incluirEstágiosAntesDoPontoAssíncrono, Boolean incluirEstágiosApósDoPontoAssíncrono) +3064

Observação

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

Causa

Esse problema ocorre porque novas contas não recebem a 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 MDS e o banco de dados 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 MDS_ServiceAccounts grupo de usuários local 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 mestre. À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ços usando a sys.dm_broker_activated_tasks DMV (exibição de gerenciamento dinâmico) para verificar o progresso da atividade em segundo plano enfileirada.

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

O usuário não tem permissão para executar esta 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 contornar esse problema, use uma conta que seja membro da função de servidor fixa do administrador do sistema para conceder permissões manualmente à conta designada para executar o pool de aplicativos do 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 esta ação.

Em seguida, verifique se há permissões efetivas na conta 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 do SQL Server que está hospedando o catálogo 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 selecione Propriedades.

  5. Selecione a página Protegíveis. No painel inferior, selecione a guia Efetivo .

    • Se a permissão VIEW SERVER STATE efetiva estiver listada, provavelmente esse não é o problema.

    • Se a permissão não estiver listada, retorne à guia Explícita na caixa de diálogo Propriedades de Logon e marque 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 Master Data Manager para validar dados, consulte: