Fehler beim MdS-Befehl "Version überprüfen" mit einem Serverfehler in SQL Server 2012 und SQL Server 2014

Dieser Artikel hilft Ihnen, das Problem zu beheben, bei dem Master Data Services Befehl Version überprüfen (MDS) mit einem Serverfehler in SQL Server 2012 und SQL Server 2014 fehlschlägt.

Ursprüngliche Produktversion: SQL Server 2012, SQL Server 2014
Ursprüngliche KB-Nummer: 2711671

Problembeschreibung

Stellen Sie sich folgendes Szenario vor:

  • Ein Administrator installiert Microsoft SQL Server 2012 oder SQL Server 2014 MDS und stellt dann die MDS-Website mithilfe eines neuen Anwendungspoolkontos bereit.

  • Später navigieren Sie zur MDS-Website und führen dann die folgenden Schritte aus:

    1. Klicken Sie auf die Seite Versionen verwalten .

    2. Klicken Sie auf der oberen Symbolleiste auf den Befehl Version überprüfen .

    3. Sie aktivieren das Kontrollkästchen Überprüfen für Modell.

    4. Sie bestätigen die Eingabeaufforderung Sind Sie sicher, dass Sie diese Version überprüfen möchten? und klicken Sie dann auf OK.

In diesem Szenario erhalten Sie die folgende Fehlermeldung im Browserfenster:

Serverfehler in der Anwendung "/".
Fehler beim Verarbeiten des Nachrichtenanforderungstyps "ValidationGetRequest". Weitere Informationen finden Sie unter Ausnahmedetails.
Beschreibung: Während der Ausführung der aktuellen Webanforderung ist eine Ausnahme ohne Behandlung aufgetreten. Weitere Informationen zu dem Fehler und dessen Ursprung im Code finden Sie in der Stapelüberwachung.
Ausnahmedetails: Microsoft.MasterDataServices.WebUI.ServiceAdapterException: Fehler beim Verarbeiten des Nachrichtenanforderungstyps "ValidationGetRequest". Weitere Informationen finden Sie unter Ausnahmedetails.
Quellfehler:
Während der Ausführung der aktuellen Webanforderung wurde eine Ausnahme generiert, die nicht behandelt wurde. Informationen zum Ursprung und Speicherort der Ausnahme können mithilfe der nachstehenden Ausnahmestapelablaufverfolgung identifiziert werden.
Stapelüberwachung:
[ServiceAdapterException: Fehler beim Verarbeiten des Nachrichtenanforderungstyps "ValidationGetRequest". Weitere Informationen finden Sie unter Ausnahmedetails.]
Microsoft.MasterDataServices.WebUI.ServiceAdapter.InspectResponseForErrors(MessageRequest request, MessageResponse response) +687
Microsoft.MasterDataServices.WebUI.ServiceAdapter.ExecuteRequest(MdmServiceOperation 2-Vorgang, TRequestType-Anforderung) +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

Hinweis

Ein ähnliches Problem kann auftreten, wenn eine benutzerdefinierte Microsoft .NET Framework-Anwendung die MDS-API-Klasse ValidationGetRequest verwendet. Dieses Problem ist dokumentiert unter : ValidationGetRequest-Klasse.

Ursache

Dieses Problem tritt auf, weil neuen Konten die VIEW SERVER STATE Berechtigung nicht erteilt wird.

Wenn Sie das Hilfsprogramm Konfigurations-Manager für Master Data Services verwenden, um eine MDS-Website zu erstellen, werden Sie vom Tool zur Eingabe der Anmeldeinformationen für das Anwendungspoolbenutzerkonto für die Anwendungspoolidentität aufgefordert.

Nachdem der MDS-Server und die Datenbank ausgewählt wurden, erteilt das Tool dem Konto anschließend Berechtigungen. Dem angegebenen Anmeldeinformationskonto des Anwendungspools werden mehrere Berechtigungen in der angegebenen MDS-Datenbank gewährt und der MDS_ServiceAccounts lokalen Benutzergruppe und der mds_exec Datenbankrolle innerhalb des angegebenen MDS-Datenbankkatalogs hinzugefügt.

Die Berechtigung wird jedoch VIEW SERVER STATE nicht für die master-Datenbank erteilt. Manchmal verfügen Windows-Konten möglicherweise über diese Berechtigung in SQL Server. Diese Berechtigung wird neuen Konten jedoch standardmäßig nicht erteilt.

Die VIEW SERVER STATE Berechtigung ist nützlich, um den Service Broker mithilfe der sys.dm_broker_activated_tasks dynamischen Verwaltungssicht (Dynamic Management View, DMV) abzufragen, um den Fortschritt der Hintergrundaktivität in der Warteschlange zu überprüfen.

Die MDS-Webanwendung führt intern die gespeicherte exec-Prozedur mdm.udpValidationIsRunning aus, um den Überprüfungsfortschritt zu überprüfen. Die Anmeldeinformationen des Anwendungspools, die die Abfrage ausführen, verfügen jedoch nicht über Berechtigungen für die DMV und erhalten die folgende Fehlermeldung:

Der Benutzer verfügt nicht über die Berechtigung zum Ausführen dieser Aktion.

Die folgende Anweisung innerhalb der Prozedur schlägt fehl, und die Webseite wird nicht gerendert:

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

Problemumgehung

Um dieses Problem zu umgehen, verwenden Sie ein Konto, das Mitglied der festen Serverrolle des Systemadministrators ist, um dem Konto, das für die Ausführung des MDS-Anwendungspools bestimmt ist, manuell Berechtigungen zu erteilen.

Führen Sie beispielsweise die folgenden Befehle aus, um die Berechtigungen manuell zu erteilen:

USE Master;

GO

GRANT VIEW SERVER STATE TO <domain\MdsWebAppAccount>;

Hinweis

Die Platzhalterdomäne <\MdsWebAppAccount> stellt das richtige Konto für Ihre Konfiguration dar.

Weitere Informationen

Um festzustellen, ob dieses Problem mit der VIEW SERVER STATE Berechtigung zusammenhängt, führen Sie eine SQL Profiler-Ablaufverfolgung aus, und suchen Sie dann nach der folgenden Fehlermeldung, wenn Sie die Anweisungen ausführen, wie im Abschnitt Ursache beschrieben:

Der Benutzer verfügt nicht über die Berechtigung zum Ausführen dieser Aktion.

Überprüfen Sie dann das Konto auf effektive Berechtigungen, und fügen Sie die Berechtigungen hinzu, falls dies erforderlich ist. Gehen Sie dazu wie folgt vor:

  1. Öffnen Sie Management Studio, und stellen Sie dann eine Verbindung mit der SQL Server Datenbank-Engine her, die den MDS-Katalog hostet.

  2. Erweitern Sie im Bereich Objekt-Explorer den Ordner Sicherheit.

  3. Suchen Sie das Konto, das zum Ausführen des IIS MDS-Anwendungspools verwendet wird.

  4. Klicken Sie mit der rechten Maustaste auf das Konto, und klicken Sie dann auf Eigenschaften.

  5. Klicken Sie auf die Seite Sicherungsfähige Elemente . Klicken Sie im unteren Bereich auf die Registerkarte Effektiv .

    • Wenn die effektive Berechtigung VIEW SERVER STATE aufgeführt ist, ist dies wahrscheinlich nicht das Problem.

    • Wenn die Berechtigung nicht aufgeführt ist, kehren Sie zur Registerkarte Explizit im Dialogfeld Anmeldeeigenschaften zurück, und aktivieren Sie dann das Kontrollkästchen Serverstatusberechtigungen anzeigen , um dem Konto Berechtigungen zu erteilen.

References

Weitere Informationen zur Verwendung der Master Data Manager-Webanwendung zum Überprüfen von Daten finden Sie unter: