Errore del comando Convalida versione MDS con un errore del server in SQL Server 2012 e SQL Server 2014

Questo articolo consente di risolvere il problema per cui il comando Convalida versione di Master Data Services (MDS) non riesce con un errore del server in SQL Server 2012 e SQL Server 2014.

Versione originale del prodotto: SQL Server 2012, SQL Server 2014
Numero KB originale: 2711671

Sintomi

Considerare lo scenario descritto di seguito:

  • Un amministratore installa Microsoft SQL Server 2012 o SQL Server MDS 2014 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. Fare clic sulla pagina Gestisci versioni .

    2. Fare clic sul comando Convalida versione sulla barra degli strumenti superiore.

    3. Selezionare la casella di controllo Convalida per Modello.

    4. Confermare il prompt Verificare se si vuole convalidare questa versione? e quindi fare clic su OK.

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

Errore del server nell'applicazione '/'.
Errore durante l'elaborazione del tipo di richiesta di messaggio 'ValidationGetRequest'. Per altre informazioni, vedere i dettagli sulle eccezioni.
Descrizione: si è verificata un'eccezione non gestita durante l'esecuzione della richiesta Web corrente. Esaminare la traccia dello stack per altre informazioni sull'errore e sulla posizione in cui ha avuto origine nel codice.
Dettagli eccezione: Microsoft.MasterDataServices.WebUI.ServiceAdapterException: errore durante l'elaborazione del tipo di richiesta di messaggio 'ValidationGetRequest'. Per altre informazioni, vedere i dettagli sulle eccezioni.
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 riportata di seguito.
Analisi dello stack:
[ServiceAdapterException: errore durante l'elaborazione del tipo di richiesta di messaggio 'ValidationGetRequest'. Per altre informazioni, vedere i dettagli dell'eccezione.
Microsoft.MasterDataServices.WebUI.ServiceAdapter.InspectResponseForErrors(Richiesta MessageRequest, risposta MessageResponse) +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

Nota

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.

Dopo aver selezionato il server e il database MDS, lo strumento concede le autorizzazioni all'account. All'account delle 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. Per impostazione predefinita, tuttavia, ai nuovi account non viene concessa tale 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 dell'attività in background in coda.

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

L'utente non dispone dell'autorizzazione per eseguire questa azione.

L'istruzione seguente all'interno della routine ha esito negativo e non viene eseguito il rendering della pagina Web:

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>;

Nota

Il segnaposto <domain\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 eseguire questa azione.

Controllare quindi l'account per le autorizzazioni valide e aggiungere le autorizzazioni, se necessario. A tal fine, attenersi alla seguente procedura:

  1. Aprire Management Studio e quindi connettersi al motore di database 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 MDS IIS.

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

  5. Fare clic sulla pagina Entità a protezione diretta . Nel riquadro inferiore fare clic sulla scheda Efficace .

    • Se l'autorizzazione VIEW SERVER STATE effettiva è elencata, probabilmente non si tratta del problema.

    • Se l'autorizzazione non è elencata, tornare alla scheda Esplicita nella finestra di dialogo Proprietà account di accesso e quindi fare clic per 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: