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:
Clique na página Gerenciar Versões .
Clique no comando Validar Versão na barra de ferramentas superior.
Selecione a caixa Validar marcar para Modelo.
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:
Abra o Management Studio e conecte-se ao mecanismo de banco de dados SQL Server que está hospedando o catálogo do MDS.
No painel Pesquisador de Objetos, expanda a pasta Segurança.
Localize a conta usada para executar o pool de aplicativos MDS do IIS.
Clique com o botão direito do mouse na conta e clique em Propriedades.
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:
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários