Polecenie MDS Validate Version kończy się niepowodzeniem z powodu błędu serwera w SQL Server 2012 i SQL Server 2014

Ten artykuł pomaga rozwiązać problem polegający na tym, że polecenie Master Data Services (MDS) Validate Version kończy się niepowodzeniem z powodu błędu serwera w SQL Server 2012 r. i SQL Server 2014 r.

Oryginalna wersja produktu: SQL Server 2012, SQL Server 2014
Oryginalny numer KB: 2711671

Symptomy

Rozpatrzmy następujący scenariusz:

  • Administrator instaluje usługę MDS firmy Microsoft SQL Server 2012 lub SQL Server 2014, a następnie wdraża witrynę internetową mds przy użyciu nowego konta puli aplikacji.

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

    1. Kliknij stronę Zarządzanie wersjami .

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

    3. Zaznacz pole wyboru Weryfikuj dla modelu.

    4. Potwierdzasz monit Czy na pewno chcesz zweryfikować tę wersję? i kliknij przycisk 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ła:
Podczas wykonywania bieżącego żądania internetowego wygenerowano nieobsługiwany wyjątek. Informacje dotyczące źródła i lokalizacji wyjątku można zidentyfikować przy użyciu poniższego śledzenia stosu wyjątków.
Ślad stosu:
[ServiceAdapterException: Wystąpił błąd podczas przetwarzania typu żądania komunikatu "ValidationGetRequest". Aby uzyskać więcej informacji, zobacz szczegóły wyjątku.]
Microsoft.MasterDataServices.WebUI.ServiceAdapter.InspectResponseForErrors(MessageRequest request, MessageResponse response) +687
Microsoft.MasterDataServices.WebUI.ServiceAdapter.ExecuteRequest(operacja MdmServiceOperation 2, żądanie 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(Wartość logiczna includeStagesBeforeAsyncPoint, wartość logiczna includeStagesAfterAsyncPoint) +3064

Uwaga

Podobny problem może wystąpić, gdy niestandardowa aplikacja .NET Framework firmy Microsoft używa klasy ValidationGetRequest interfejsu API MDS. Ten problem jest udokumentowany na stronie: ValidationGetRequest Class (Klasa ValidationGetRequest).

Przyczyna

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

W przypadku korzystania z narzędzia Menedżer konfiguracji usług Master Data Services w celu 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 grupy użytkowników lokalnych i do mds_exec roli bazy danych w określonym katalogu baz danych MDS.

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

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

Aplikacja internetowa MDS wewnętrznie uruchamia procedurę składowaną exec mdm.udpValidationIsRunning , aby sprawdzić postęp weryfikacji. Jednak poświadczenie puli aplikacji uruchamiane w zapytaniu nie ma uprawnień do DMV i otrzymuje następujący komunikat o błędzie:

Użytkownik nie ma uprawnień do wykonania tej akcji.

Poniższa 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]')

Obejście problemu

Aby obejść ten problem, użyj konta należącego do roli stałego serwera administratora systemu, aby ręcznie przyznać uprawnienia do konta wyznaczonego do uruchamiania puli aplikacji MDS.

Aby na przykład ręcznie udzielić uprawnień, uruchom następujące polecenia:

USE Master;

GO

GRANT VIEW SERVER STATE TO <domain\MdsWebAppAccount>;

Uwaga

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

Więcej informacji

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

Użytkownik nie ma uprawnień do wykonania tej akcji.

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

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

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

  3. Znajdź konto używane do uruchamiania puli aplikacji mds usług IIS.

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

  5. Kliknij stronę Zabezpieczane . W dolnym okienku kliknij kartę Obowiązujące .

    • Jeśli na liście znajduje się obowiązujące uprawnienie VIEW SERVER STATE , prawdopodobnie nie jest to problem.

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

Informacje

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