El comando MDS Validate Version produce un error de servidor en SQL Server 2012 y SQL Server 2014

Este artículo le ayuda a resolver el problema por el que Master Data Services (MDS) El comando Validate Version produce un error de servidor en SQL Server 2012 y SQL Server 2014.

Versión original del producto: SQL Server 2012, SQL Server 2014
Número de KB original: 2711671

Síntomas

Imagine la siguiente situación:

  • Un administrador instala Microsoft SQL Server 2012 o SQL Server MDS de 2014 y, a continuación, implementa el sitio web de MDS mediante una nueva cuenta de grupo de aplicaciones.

  • Más adelante, vaya al sitio web de MDS y siga estos pasos:

    1. Haga clic en la página Administrar versiones .

    2. Haga clic en el comando Validar versión en la barra de herramientas superior.

    3. Active la casilla Validar para Modelo.

    4. Confirme el mensaje ¿Está seguro de que desea validar esta versión? y, a continuación, haga clic en Aceptar.

En este escenario, recibirá el siguiente mensaje de error en la ventana del explorador:

Error del servidor en la aplicación "/".
Error al procesar el tipo de solicitud de mensaje "ValidationGetRequest". Consulte detalles de excepciones para obtener más información.
Descripción: se produjo una excepción no controlada durante la ejecución de la solicitud web actual. Revise el seguimiento de la pila para obtener más información sobre el error y dónde se originó en el código.
Detalles de la excepción: Microsoft.MasterDataServices.WebUI.ServiceAdapterException: Error al procesar el tipo de solicitud de mensaje "ValidationGetRequest". Consulte detalles de excepciones para obtener más información.
Error de origen:
Se generó una excepción no controlada durante la ejecución de la solicitud web actual. La información sobre el origen y la ubicación de la excepción se puede identificar mediante el seguimiento de la pila de excepciones siguiente.
Seguimiento de pila:
[ServiceAdapterException: error al procesar el tipo de solicitud de mensaje 'ValidationGetRequest'. Consulte los detalles de la excepción para obtener más información.]
Microsoft.MasterDataServices.WebUI.ServiceAdapter.InspectResponseForErrors(MessageRequest request, MessageResponse response) +687
Microsoft.MasterDataServices.WebUI.ServiceAdapter.ExecuteRequest(operación MdmServiceOperation 2, solicitud 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 includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3064

Nota:

Puede producirse un problema similar cuando una aplicación personalizada de Microsoft .NET Framework usa la clase de API MDS ValidationGetRequest. Este problema se documenta en: ValidationGetRequest (clase).

Causa

Este problema se produce porque no se concede el permiso a VIEW SERVER STATE las nuevas cuentas.

Cuando se usa la utilidad Administrador de configuración de Master Data Services para crear un sitio web de MDS, la herramienta le pide las credenciales de la cuenta de usuario del grupo de aplicaciones para la identidad del grupo de aplicaciones.

A continuación, una vez seleccionados el servidor y la base de datos mds, la herramienta concede permisos a la cuenta. A la cuenta de credenciales del grupo de aplicaciones especificada se le conceden varios permisos en la base de datos MDS especificada y se agrega al MDS_ServiceAccounts grupo de usuarios locales y al mds_exec rol de base de datos dentro del catálogo de base de datos MDS especificado.

Sin embargo, el VIEW SERVER STATE permiso no se concede a la base de datos maestra. A veces, las cuentas de Windows pueden tener ese permiso en SQL Server. Sin embargo, de forma predeterminada, a las cuentas nuevas no se les concede ese permiso.

El VIEW SERVER STATE permiso es útil para consultar el agente de servicio mediante la sys.dm_broker_activated_tasks vista de administración dinámica (DMV) para comprobar el progreso de la actividad en segundo plano en cola.

La aplicación web MDS ejecuta internamente el procedimiento almacenado exec mdm.udpValidationIsRunning para comprobar el progreso de la validación. Sin embargo, la credencial del grupo de aplicaciones que ejecuta la consulta no tiene permisos para la DMV y recibe el siguiente mensaje de error:

El usuario no tiene permiso para realizar esta acción.

Se produce un error en la siguiente instrucción dentro del procedimiento y no se representa la página web:

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

Solución alternativa

Para solucionar este problema, use una cuenta que sea miembro del rol fijo de servidor administrador del sistema para conceder manualmente permisos a la cuenta designada para ejecutar el grupo de aplicaciones MDS.

Por ejemplo, para conceder manualmente los permisos, ejecute los siguientes comandos:

USE Master;

GO

GRANT VIEW SERVER STATE TO <domain\MdsWebAppAccount>;

Nota:

El dominio de marcador de posición <\MdsWebAppAccount> representa la cuenta correcta para la configuración.

Más información

Para determinar si este problema está relacionado con el VIEW SERVER STATE permiso, ejecute un seguimiento de SQL Profiler y busque el siguiente mensaje de error al ejecutar las instrucciones como se describe en la sección Causa :

El usuario no tiene permiso para realizar esta acción.

A continuación, compruebe si la cuenta tiene permisos efectivos y agregue los permisos si es necesario. Para ello, siga estos pasos:

  1. Abra Management Studio y, a continuación, conéctese al motor de base de datos de SQL Server que hospeda el catálogo de MDS.

  2. En el panel Explorador de objetos, expanda la carpeta Seguridad.

  3. Busque la cuenta que se usa para ejecutar el grupo de aplicaciones DE MDS de IIS.

  4. Haga clic con el botón derecho en la cuenta y, a continuación, haga clic en Propiedades.

  5. Haga clic en la página Elementos protegibles . En el panel inferior, haga clic en la pestaña Efectivo .

    • Si se muestra el permiso VIEW SERVER STATE efectivo, es probable que esto no sea el problema.

    • Si el permiso no aparece, vuelva a la pestaña Explícito en el cuadro de diálogo Propiedades de inicio de sesión y, a continuación, haga clic para activar la casilla Ver permisos de estado del servidor para conceder permisos a la cuenta.

Referencias

Para obtener más información sobre cómo usar la aplicación web Master Data Manager para validar datos, consulte: