Udostępnij za pośrednictwem


Zdarzenie o identyfikatorze 84 występuje w Usługi Active Directory Rights Management (AD RMS) w systemie Windows Server

Ten artykuł zawiera pomoc w rozwiązaniu problemu, w którym identyfikator zdarzenia 84 jest rejestrowany w Usługi Active Directory Rights Management (AD RMS) w systemie Windows Server.

Oryginalny numer KB: 4038927

Symptomy

Na komputerze z systemem Windows Server, na którym zainstalowano Usługi Active Directory Rights Management (AD RMS), zostanie wyświetlone następujące zdarzenie:

Nazwa dziennika: Aplikacja
Źródło: Usługi Active Directory Rights Management
Data: data/godzina
Identyfikator zdarzenia: 84
Kategoria zadania: Certyfikacja
Poziom: Błąd
Słowa kluczowe: Klasyczne
Użytkownik: Nie dotyczy
Komputer: ipc01.treyresearch.net
Opis rozwiązania:
Ten klaster Usługi Active Directory Rights Management (AD RMS) nie może wykonać operacji na jednej z baz danych usług AD RMS. Upewnij się, że wszystkie bazy danych usług AD RMS działają prawidłowo w sieci i że konto usługi AD RMS ma uprawnienia do odczytu i zapisu w bazach danych.

Odwołanie do parametrów
Kontekst: Pipeline[ComponentBase.LogResults]
RequestId:RequestID
HelpLink.ProdName: Microsoft SQL Server
HelpLink.ProdVer: 10.50.4000
HelpLink.EvtSrc: MSSQLServer
HelpLink.EvtID: 8115
HelpLink.BaseHelpUrl: https://go.microsoft.com/fwlink
HelpLink.LinkId: 20476
SqlError-1.Class: 0
SqlError-0.State: 1
SqlError-1.Server: sql01.treyresearch.net,1441
SqlError-0.Message: Błąd przepełnienia arytmetycznego konwertując wartość IDENTITY na typ danych smallint.
SqlError-1.Number: 3606
SqlError-0.Number: 8115
SqlError-1.Message: Wystąpił przepełnienie arytmetyczne.
SqlError-1.State: 0
SqlError-0.Server: sql01.treyresearch.net,1441
SqlError-0.Class: 16

Microsoft.RightsManagementServices.LowSeveritySqlException
Komunikat: Aparat bazy danych zwrócił ten wyjątek w odpowiedzi na błąd, który może zostać poprawiony przez użytkownika, taki jak brak obiektu bazy danych lub jednostki, możliwa niespójność danych, zakleszczenie transakcji, problemy z ustawieniem zabezpieczeń lub błąd składni polecenia SQL. Aby uzyskać więcej informacji, zapoznaj się ze szczegółami błędu SqlError.
HelpLink.ProdName: Microsoft SQL Server
HelpLink.ProdVer: 10.50.4000
HelpLink.EvtSrc: MSSQLServer
HelpLink.EvtID: 8115
HelpLink.BaseHelpUrl: https://go.microsoft.com/fwlink
HelpLink.LinkId: 20476
Kontekst: ComponentBase.LogResults
SqlError-1.Class: 0
SqlError-0.State: 1
SqlError-1.Server: sql01.treyresearch.net,1441
SqlError-0.Message: Błąd przepełnienia arytmetycznego konwertując wartość IDENTITY na typ danych smallint.
SqlError-1.Number: 3606
SqlError-0.Number: 8115
SqlError-1.Message: Wystąpił przepełnienie arytmetyczne.
SqlError-1.State: 0
SqlError-0.Server: sql01.treyresearch.net,1441
SqlError-0.Class: 16
+ System.Data.SqlClient.SqlException
+ Komunikat: Błąd przepełnienia arytmetycznego konwertując tożsamość na typ danych smallint. Wystąpił przepełnienie arytmetyczne.
+ HelpLink.ProdName: Microsoft SQL Server
+ HelpLink.ProdVer: 10.50.4000
+ HelpLink.EvtSrc: MSSQLServer
+ HelpLink.EvtID: 8115
+ HelpLink.BaseHelpUrl: https://go.microsoft.com/fwlink
+ HelpLink.LinkId: 20476
+ Kontekst: ComponentBase.LogResults

Przyczyna

Ten problem występuje, ponieważ proces rejestrowania usług AD RMS nie rejestruje zdarzenia w bazie danych rejestrowania.

W bazie danych rejestrowania istnieją dwie tabele odwołujące się do wartości UserAgentId. Oba dbo. UserAgent i dbo. Tabele ServiceRequest mają kolumnę UserAgentId. Te kolumny są typu danych smallint. Gdy tylko wartość UserAgentId przekroczy maksymalną wartość (~32,767), baza danych rejestrowania nie może zaktualizować. Gdy transakcja nie jest rejestrowane, usługa RMS wycofa żądanie i zgłosi błąd.

Więcej informacji

Podczas żądania licencji z usług AD RMS klienci przekazują ciągi agentów z podstawowymi informacjami na temat aplikacji żądającej. Dbo. Tabela UserAgent przechowuje tylko unikatowe ciągi agenta.

Pierwotnie klienci MSIPC właśnie przekazali wersje systemu operacyjnego, aplikacji, MSIPC i architektury. Tabela, w której są przechowywane ciągi, przechowuje tylko unikatowe wpisy. Nie powinno istnieć wiele unikatowych ciągów w całej bazie użytkownika.

MSIPC;version=1.0.2191.0;AppName=EXCEL.EXE;AppVersion=16.0.7369.2127;AppArch=x86;OSName=Windows;OSVersion=10.0.10586;OSArch=amd64

W pewnym momencie klient MSIPC zaczął zawierać identyfikator procesu (PID) do tego ciągu agenta użytkownika. Sprawia to, że każdy ciąg jest unikatowy.

MSIPC;version=1.0.2456.0;AppName=EXCEL.EXE;AppVersion=15.0.4919.1000;AppArch=x86;PID=13660;OSName=Windows;OSVersion=6.1.7601;OSA

W związku z tym tabela, która nie powinna mieć strasznie wielu unikatowych ciągów do przechowywania, ma teraz wiele tysięcy.

Rozwiązanie

Aby obejść ten problem, wyłącz rejestrowanie w klastrze usług AD RMS:

Usuń zaznaczenie opcji Włącz rejestrowanie w klastrze A D R M S.

Rozwiązanie

Aby rozwiązać ten problem, zmień typ danych kolumn z smallint na int (liczba całkowita). W tym celu wykonaj następujące kroki:

Uwaga 16.

Zmiana dużej bazy danych rejestrowania (DB) może zająć dużo czasu i może powodować problemy z wydajnością programu SQL. W związku z tym zalecamy utworzenie kopii zapasowej bazy danych SQL z produkcyjnego wystąpienia SQL i przywrócenie jej w lokalizacji sql nieprodukcyjnej. Następnie można przeprowadzić zmianę bazy danych w lokalizacji nieprodukcyjnej SQL, a następnie zastąpić produkcyjną bazę danych.

  1. Tworzenie kopii zapasowej bazy danych rejestrowania usług AD RMS.

  2. Zbierz informacje SQL.

    • Nazwa bazy danych rejestrowania usług AD RMS
    • Nazwa klucza Dbo.UserAgent

    Zbierz informacje SQL dotyczące nazwy bazy danych rejestrowania A D R M S i nazwy klucza Dbo.UserAgent.

  3. Wygeneruj skrypt (zobacz poniższy przykład).

Przykładowy skrypt

Uwaga 16.

Edytuj nazwę bazy danych i wartość klucza tabeli UserAgent, aby odzwierciedlić środowisko docelowe.

/******************************************************************************* 
THIS TOOL AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
*******************************************************************************/
use [DRMS_Logging_ipc_treyresearch_net_443]
go

ALTER TABLE [dbo].[ServiceRequest] drop CONSTRAINT [FK_CLIENTINFOID_ServiceRequest_UserAgent]
GO

Alter table [dbo].[ServiceRequest] alter COLUMN [UserAgentId] int
GO

ALTER TABLE [dbo].[UserAgent] DROP CONSTRAINT [PK__UserAgen__UserAgentId]
GO

Alter table [dbo].[UserAgent] alter COLUMN [UserAgentId] int
GO

Alter table [dbo].[UserAgent] ADD PRIMARY KEY (UserAgentId)
GO

ALTER TABLE [dbo].[ServiceRequest] WITH CHECK ADD CONSTRAINT [FK_CLIENTINFOID_ServiceRequest_UserAgent] FOREIGN KEY([UserAgentId]) REFERENCES [dbo].[UserAgent] ([UserAgentId])
GO

ALTER TABLE [dbo].[ServiceRequest] CHECK CONSTRAINT [FK_CLIENTINFOID_ServiceRequest_UserAgent]
GO