Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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.
Version du produit d’origine : SQL Server
Numéro de base de connaissances d’origine : 2711671
Symptômes
Examinez le cas suivant :
Un administrateur installe Microsoft SQL Server, puis déploie le site web MDS à l’aide d’un nouveau compte de pool d’applications.
Plus tard, vous accédez au site web MDS, puis procédez comme suit :
Sélectionnez la page Gérer les versions .
Sélectionnez la commande Valider la version dans la barre d’outils supérieure.
Cochez la case Valider pour le modèle.
Vous confirmez l'invite Êtes-vous sûr de vouloir valider cette version ? puis sélectionnez OK.
Dans ce scénario, vous recevez le message d’erreur suivant dans la fenêtre du navigateur :
Erreur de 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 en cours. Veuillez consulter l’arborescence des appels de procédure pour plus d’informations sur l’erreur et sa source dans le code.
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 pendant 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.
Rapport des appels de procédure :
[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(Demande MessageRequest, 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.
La cause
Ce problème se produit parce que les nouveaux comptes ne reçoivent pas 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 MDS et la base de données 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 bases 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 sont pas accordés à 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 vérifier 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 vérifier la progression de la validation. Toutefois, les identifiants du pool de l’application qui exécute la requête n’ont pas d’autorisations sur la vue de gestion dynamique (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
Le domaine d’espace réservé <\MdsWebAppAccount> représente le compte approprié 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, vérifiez le compte pour obtenir des autorisations effectives et ajoutez les autorisations si nécessaire. Pour ce faire, procédez comme suit :
Ouvrez Management Studio, puis connectez-vous au moteur de base de données SQL Server qui héberge le catalogue MDS.
Dans le volet Explorateur d’objets, développez le dossier Sécurité .
Recherchez le compte utilisé pour exécuter le pool d’applications IIS MDS.
Cliquez avec le bouton droit sur le compte, puis sélectionnez Propriétés.
Sélectionnez la page Éléments sécurisables. Dans le volet inférieur, sélectionnez l’onglet Effectif .
Si l’autorisation
VIEW SERVER STATEeffective est répertoriée, cela 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 activez la case à cocher Afficher les autorisations d’état du serveur pour accorder des autorisations au compte.
références
Pour plus d’informations sur l’utilisation de l’application web Master Data Manager pour valider des données, consultez :