Udostępnij za pośrednictwem


Polecenie Walidacja wersji usługi MDS kończy się niepowodzeniem z powodu błędu serwera w programie SQL Server

Ten artykuł pomaga rozwiązać problem polegający na tym, że polecenie Weryfikacja wersji usługi Master Data Services (MDS) kończy się niepowodzeniem z powodu błędu serwera w programie SQL Server.

Oryginalna wersja produktu: SQL Server
Oryginalny numer KB: 2711671

Symptomy

Rozważmy następujący scenariusz:

  • Administrator instaluje program Microsoft SQL Server, a następnie wdraża witrynę internetową MDS przy użyciu nowego konta puli aplikacji.

  • Później przejdź do witryny internetowej usługi MDS, a następnie wykonaj następujące kroki:

    1. Wybierz stronę Zarządzanie wersjami .

    2. Wybierz polecenie Weryfikuj wersję na górnym pasku narzędzi.

    3. Zaznacz pole wyboru Validate dla Model.

    4. Potwierdzasz monit Czy na pewno chcesz zweryfikować tę wersję?, a następnie wybierasz OK.

W tym scenariuszu w oknie przeglądarki zostanie wyświetlony następujący komunikat o błędzie:

Błąd serwera w aplikacji "/".
Wystąpił błąd podczas przetwarzania typu żądania komunikatu "ValidationGetRequest". Aby uzyskać więcej informacji, zobacz szczegóły wyjątku.
Opis: Wystąpił nieobsługiwany wyjątek podczas wykonywania bieżącego żądania internetowego. Przejrzyj ślad stosu, aby uzyskać więcej informacji o błędzie i miejscu jego pochodzenia w kodzie.
Szczegóły wyjątku: Microsoft.MasterDataServices.WebUI.ServiceAdapterException: Wystąpił błąd podczas przetwarzania typu żądania komunikatu "ValidationGetRequest". Aby uzyskać więcej informacji, zobacz szczegóły wyjątku.
Błąd źródłowy:
Nieobsługiwany wyjątek został wygenerowany podczas wykonywania bieżącego żądania internetowego. Informacje dotyczące pochodzenia i lokalizacji wyjątku można zidentyfikować przy użyciu poniższego śladu stosu wyjątków.
Ślad stosu:
[ServiceAdapterException: Wystąpił błąd podczas przetwarzania typu żądania komunikatu "ValidationGetRequest". Zobacz szczegóły wyjątku, aby uzyskać więcej informacji.]
Microsoft.MasterDataServices.WebUI.ServiceAdapter.InspectResponseForErrors(Żądanie MessageRequest, odpowiedź MessageResponse) +687
Microsoft.MasterDataServices.WebUI.ServiceAdapter.ExecuteRequest(Operacja MdmServiceOperation 2, żądanie TRequestType) +75
Microsoft.MasterDataServices.WebUI.ServiceAdapter.GetValidationStatus(Int32 versionInternalId, 1 entityInternalId, Nullable 1 memberType, String notificationUserName, IList 1 memberIds, Boolean omitSummary, Boolean omitIssuesList, Int32 pageNumber, Int32 pageSize, String sortColumn, SortDirection SortDirection) +6788
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(Wartość logiczna includeStagesBeforeAsyncPoint, wartość logiczna includeStagesAfterAsyncPoint) +3064

Uwaga 16.

Podobny problem może wystąpić, gdy niestandardowa aplikacja microsoft .NET Framework używa klasy ValidationGetRequest klasy interfejsu API MDS. Ten problem został udokumentowany w temacie ValidationGetRequest Class (Klasa ValidationGetRequest).

Przyczyna

Ten problem występuje, ponieważ nowe konta nie mają uprawnień VIEW SERVER STATE .

Gdy używasz narzędzia Menedżer konfiguracji usług Master Data Services do utworzenia witryny internetowej usługi MDS, narzędzie wyświetli monit o podanie poświadczeń konta użytkownika puli aplikacji dla tożsamości puli aplikacji.

Następnie po wybraniu serwera MDS i bazy danych narzędzie udziela uprawnień do konta. Określone konto poświadczeń puli aplikacji ma kilka uprawnień w określonej bazie danych MDS i jest dodawane do MDS_ServiceAccounts lokalnej grupy użytkowników oraz do mds_exec roli bazy danych w określonym wykazie baz danych MDS.

VIEW SERVER STATE Jednak uprawnienie nie jest przyznawane głównej bazie danych. Czasami konta systemu Windows mogą mieć to uprawnienie w programie SQL Server. Jednak domyślnie nowe konta nie mają tego uprawnienia.

Uprawnienie VIEW SERVER STATE jest przydatne do wykonywania zapytań względem brokera usług przy użyciu dynamicznego sys.dm_broker_activated_tasks widoku zarządzania (DMV), aby sprawdzić postęp działania w tle w kolejce.

Aplikacja internetowa MDS wewnętrznie uruchamia procedurę składowaną exec mdm.udpValidationIsRunning , aby sprawdzić postęp walidacji. Jednak poświadczenie puli aplikacji, na którym uruchomiono zapytanie, nie ma uprawnień do dynamicznego widoku zarządzania dostępem i otrzymuje następujący komunikat o błędzie:

Użytkownik nie ma uprawnienia do wykonania tej czynności.

Następująca instrukcja wewnątrz procedury kończy się niepowodzeniem, a strona internetowa nie jest renderowana:

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

Rozwiązanie

Aby obejść ten problem, użyj konta, które jest członkiem roli serwera stałego administratora systemu, aby ręcznie udzielić uprawnień do konta wyznaczonego do uruchamiania puli aplikacji MDS.

Aby na przykład ręcznie przyznać uprawnienia, uruchom następujące polecenia:

USE Master;

GO

GRANT VIEW SERVER STATE TO <domain\MdsWebAppAccount>;

Uwaga 16.

Domena zastępcza <\MdsWebAppAccount> reprezentuje prawidłowe konto konfiguracji.

Więcej informacji

Aby ustalić, czy ten problem jest związany z uprawnieniem, uruchom ślad programu SQL Profiler, a następnie poszukaj następującego komunikatu o błędzie podczas uruchamiania instrukcji zgodnie z VIEW SERVER STATE opisem w sekcji Przyczyna :

Użytkownik nie ma uprawnienia do wykonania tej czynności.

Następnie sprawdź konto pod kątem obowiązujących uprawnień i dodaj uprawnienia, jeśli jest to konieczne. W tym celu wykonaj następujące kroki:

  1. Otwórz program Management Studio, a następnie połącz się z aparatem bazy danych programu SQL Server hostujący katalog MDS.

  2. W okienku Eksplorator obiektów rozwiń folder Zabezpieczenia.

  3. Znajdź konto używane do uruchamiania puli aplikacji USŁUG MDS usług IIS.

  4. Kliknij prawym przyciskiem myszy konto, a następnie wybierz polecenie Właściwości.

  5. Wybierz stronę Elementy do zabezpieczenia. W dolnym okienku wybierz kartę Skuteczne .

    • Jeśli na liście obowiązuje uprawnienie VIEW SERVER STATE , prawdopodobnie nie jest to problem.

    • Jeśli uprawnienie nie jest na liście, wróć do karty Jawne w oknie dialogowym Właściwości logowania, a następnie zaznacz pole wyboru Wyświetl uprawnienia stanu serwera, aby udzielić uprawnień do konta.

Informacje

Aby uzyskać więcej informacji na temat używania aplikacji internetowej Master Data Manager do weryfikowania danych, zobacz: