Il comando MDS Validate Version fallisce a causa di un errore del server in SQL Server.

Questo articolo illustra come risolvere il problema a causa del quale il comando Convalida versione master Data Services (MDS) ha esito negativo con un errore del server in SQL Server.

Versione originale del prodotto: SQL Server
Numero KB originale: 2711671

Sintomi

Prendi in considerazione lo scenario seguente:

  • Un amministratore installa Microsoft SQL Server e quindi distribuisce il sito Web MDS usando un nuovo account del pool di applicazioni.

  • Successivamente, passare al sito Web MDS e quindi seguire questa procedura:

    1. Selezionare la pagina Gestisci versioni .

    2. Selezionare il comando Convalida versione sulla barra degli strumenti superiore.

    3. Selezionare la casella di controllo Convalida per Modello.

    4. Confermi la richiesta Sei sicuro di voler convalidare questa versione? e quindi selezioni OK.

In questo scenario viene visualizzato il seguente messaggio di errore nella finestra del browser:

Errore del server nell'applicazione '/'.
Errore durante l'elaborazione del tipo di richiesta del messaggio 'ValidationGetRequest'. Per altre informazioni, vedere i dettagli dell'eccezione.
Descrizione: Eccezione non gestita durante l'esecuzione della richiesta Web corrente. Per altre informazioni sull'errore e sul suo punto di origine nel codice, vedere l'analisi dello stack.
Dettagli eccezione: Microsoft.MasterDataServices.WebUI.ServiceAdapterException: errore durante l'elaborazione del tipo di richiesta messaggio 'ValidationGetRequest'. Per altre informazioni, vedere i dettagli dell'eccezione.
Errore di origine:
Durante l'esecuzione della richiesta Web corrente è stata generata un'eccezione non gestita. Le informazioni relative all'origine e alla posizione dell'eccezione possono essere identificate usando la traccia dello stack di eccezioni seguente.
Analisi dello stack:
[ServiceAdapterException: errore durante l'elaborazione del tipo di richiesta messaggio 'ValidationGetRequest'. Per altre informazioni, vedere i dettagli delle eccezioni.
Microsoft.MasterDataServices.WebUI.ServiceAdapter.InspectResponseForErrors(MessageRequest request, MessageResponse response) +687
Operazione Microsoft.MasterDataServices.WebUI.ServiceAdapter.ExecuteRequest(MdmServiceOperation 2, richiesta 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

Annotazioni

Un problema simile può verificarsi quando un'applicazione Microsoft .NET Framework personalizzata usa la classe API MDS ValidationGetRequest. Questo problema è documentato in: Classe ValidationGetRequest.

Causa

Questo problema si verifica perché ai nuovi account non viene concessa l'autorizzazione VIEW SERVER STATE .

Quando si usa l'utilità Gestione configurazione Master Data Services per creare un sito Web MDS, lo strumento richiede le credenziali dell'account utente del pool di applicazioni per l'identità del pool di applicazioni.

Successivamente, dopo aver selezionato il server e il database MDS, lo strumento concede le autorizzazioni all'account. All'account credenziali del pool di applicazioni specificato vengono concesse diverse autorizzazioni nel database MDS specificato e viene aggiunto al MDS_ServiceAccounts gruppo di utenti locali e al ruolo del mds_exec database all'interno del catalogo di database MDS specificato.

Tuttavia, l'autorizzazione VIEW SERVER STATE non viene concessa al database master. In alcuni casi, gli account di Windows possono disporre di tale autorizzazione in SQL Server. Tuttavia, per impostazione predefinita, ai nuovi account non viene concessa l'autorizzazione.

L'autorizzazione VIEW SERVER STATE è utile per eseguire query su Service Broker usando la sys.dm_broker_activated_tasks dmv (Dynamic Management View) per controllare lo stato di avanzamento dell'attività in background in coda.

L'applicazione Web MDS esegue internamente la stored procedure exec mdm.udpValidationIsRunning per controllare lo stato di avanzamento della convalida. Tuttavia, le credenziali del pool di applicazioni che eseguono la query non dispongono delle autorizzazioni per la DMV e ricevono il messaggio di errore seguente:

L'utente non dispone dell'autorizzazione per l'esecuzione di questa azione.

L'istruzione seguente all'interno della procedura fallisce e la visualizzazione della pagina Web non viene eseguita.

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

Soluzione alternativa

Per risolvere questo problema, usare un account membro del ruolo predefinito del server amministratore di sistema per concedere manualmente le autorizzazioni all'account designato per eseguire il pool di applicazioni MDS.

Ad esempio, per concedere manualmente le autorizzazioni, eseguire i comandi seguenti:

USE Master;

GO

GRANT VIEW SERVER STATE TO <domain\MdsWebAppAccount>;

Annotazioni

Il dominio segnaposto <\MdsWebAppAccount> rappresenta l'account corretto per la configurazione.

Ulteriori informazioni

Per determinare se questo problema è correlato all'autorizzazione VIEW SERVER STATE , eseguire una traccia di SQL Profiler e quindi cercare il messaggio di errore seguente quando si eseguono le istruzioni come descritto nella sezione Causa :

L'utente non dispone dell'autorizzazione per l'esecuzione di questa azione.

Controllare quindi l'account per ottenere autorizzazioni valide e aggiungere le autorizzazioni, se necessario. A tale scopo, effettuare i passaggi seguenti:

  1. Aprire Management Studio e quindi connettersi al motore di database di SQL Server che ospita il catalogo MDS.

  2. Nel riquadro Esplora oggetti espandere la cartella Sicurezza.

  3. Individuare l'account usato per eseguire il pool di applicazioni IIS MDS.

  4. Fare clic con il pulsante destro del mouse sull'account e quindi scegliere Proprietà.

  5. Selezionare la pagina Elementi proteggibili. Nel riquadro inferiore selezionare la scheda Effettivo .

    • Se l'autorizzazione VIEW SERVER STATE effettiva è elencata, è probabile che questo non sia il problema.

    • Se l'autorizzazione non è elencata, tornare alla scheda Esplicito nella finestra di dialogo Proprietà account di accesso e quindi selezionare la casella di controllo Visualizza autorizzazioni stato server per concedere le autorizzazioni all'account.

Riferimenti

Per altre informazioni su come usare l'applicazione Web Master Data Manager per convalidare i dati, vedere: