La commande MDS Validate Version échoue avec une erreur de serveur dans SQL Server 2012 et SQL Server 2014

Cet article vous aide à résoudre le problème où la commande Master Data Services (MDS) Validate Version échoue avec une erreur de serveur dans SQL Server 2012 et SQL Server 2014.

Version d’origine du produit : SQL Server 2012, SQL Server 2014
Numéro de la base de connaissances d’origine : 2711671

Symptômes

Prenons l’exemple du scénario suivant :

  • Un administrateur installe Microsoft SQL Server 2012 ou SQL Server MDS 2014, puis déploie le site web MDS à l’aide d’un nouveau compte de pool d’applications.

  • Par la suite, vous accédez au site web MDS, puis procédez comme suit :

    1. Vous cliquez sur la page Gérer les versions .

    2. Vous cliquez sur la commande Valider la version dans la barre d’outils supérieure.

    3. Vous sélectionnez la zone Valider case activée pour Modèle.

    4. Vous confirmez l’invite Êtes-vous sûr de vouloir valider cette version ? puis cliquez sur OK.

Dans ce scénario, vous recevez le message d’erreur suivant dans la fenêtre du navigateur :

Erreur du serveur dans l’application « / ».
Une erreur s’est produite lors du traitement du type de demande de message « ValidationGetRequest ». Pour plus d’informations, consultez les détails de l’exception.
Description : une exception non gérée s’est produite lors de l’exécution de la requête web actuelle. Pour plus d’informations sur l’erreur et son origine dans le code, consultez la trace de la pile.
Détails de l’exception : Microsoft.MasterDataServices.WebUI.ServiceAdapterException : une erreur s’est produite lors du traitement du type de demande de message « ValidationGetRequest ». Pour plus d’informations, consultez les détails de l’exception.
Erreur source :
Une exception non gérée a été générée lors de l’exécution de la requête web actuelle. Les informations relatives à l’origine et à l’emplacement de l’exception peuvent être identifiées à l’aide de la trace de pile d’exceptions ci-dessous.
Trace de pile :
[ServiceAdapterException : une erreur s’est produite lors du traitement du type de demande de message « ValidationGetRequest ». Pour plus d’informations, consultez les détails de l’exception.]
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, 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

Remarque

Un problème similaire peut se produire lorsqu’une application Microsoft .NET Framework personnalisée utilise la classe d’API MDS ValidationGetRequest. Ce problème est documenté sur : ValidationGetRequest, classe.

Cause

Ce problème se produit car les nouveaux comptes ne disposent pas de l’autorisation VIEW SERVER STATE .

Lorsque vous utilisez l’utilitaire Gestionnaire de configuration Master Data Services pour créer un site web MDS, l’outil vous invite à entrer les informations d’identification du compte d’utilisateur du pool d’applications pour l’identité du pool d’applications.

Ensuite, une fois que le serveur et la base de données MDS sont sélectionnés, l’outil accorde des autorisations au compte. Le compte d’informations d’identification du pool d’applications spécifié reçoit plusieurs autorisations dans la base de données MDS spécifiée et est ajouté au MDS_ServiceAccounts groupe d’utilisateurs locaux et au mds_exec rôle de base de données dans le catalogue de base de données MDS spécifié.

Toutefois, l’autorisation VIEW SERVER STATE n’est pas accordée à la base de données master. Parfois, les comptes Windows peuvent avoir cette autorisation dans SQL Server. Toutefois, par défaut, les nouveaux comptes ne bénéficient pas de cette autorisation.

L’autorisation VIEW SERVER STATE est utile pour interroger le Service Broker à l’aide de la sys.dm_broker_activated_tasks vue de gestion dynamique (DMV) pour case activée la progression de l’activité en arrière-plan mise en file d’attente.

L’application web MDS exécute en interne la procédure stockée exec mdm.udpValidationIsRunning pour case activée la progression de la validation. Toutefois, les informations d’identification du pool d’applications qui exécutent la requête ne disposent pas d’autorisations sur la DMV et reçoivent le message d’erreur suivant :

L’utilisateur n’est pas autorisé à effectuer cette action.

L’instruction suivante à l’intérieur de la procédure échoue et la page web n’est pas rendue :

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

Solution de contournement

Pour contourner ce problème, utilisez un compte membre du rôle serveur fixe administrateur système pour accorder manuellement des autorisations au compte désigné pour exécuter le pool d’applications MDS.

Par exemple, pour accorder manuellement les autorisations, exécutez les commandes suivantes :

USE Master;

GO

GRANT VIEW SERVER STATE TO <domain\MdsWebAppAccount>;

Remarque

L’espace réservé <domain\MdsWebAppAccount> représente le compte correct pour votre configuration.

Plus d’informations

Pour déterminer si ce problème est lié à l’autorisation VIEW SERVER STATE , exécutez une trace SQL Profiler, puis recherchez le message d’erreur suivant lorsque vous exécutez les instructions comme décrit dans la section Cause :

L’utilisateur n’est pas autorisé à effectuer cette action.

Ensuite, case activée le compte pour les autorisations effectives et ajoutez les autorisations si nécessaire. Pour cela, procédez comme suit :

  1. Ouvrez Management Studio, puis connectez-vous au moteur de base de données SQL Server qui héberge le catalogue MDS.

  2. Dans le volet Explorateur d'objets, développez le dossier Sécurité.

  3. Recherchez le compte utilisé pour exécuter le pool d’applications IIS MDS.

  4. Cliquez avec le bouton droit sur le compte, puis cliquez sur Propriétés.

  5. Cliquez sur la page Sécurisables . Dans le volet inférieur, cliquez sur l’onglet Effectif .

    • Si l’autorisation VIEW SERVER STATE effective est listée, ce n’est probablement pas le problème.

    • Si l’autorisation n’est pas répertoriée, revenez à l’onglet Explicite de la boîte de dialogue Propriétés de connexion, puis cliquez pour sélectionner la zone Afficher les autorisations d’état du serveur case activée pour accorder des autorisations au compte.

References

Pour plus d’informations sur l’utilisation de l’application web Master Data Manager pour valider des données, consultez :