Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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: 16Microsoft.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:
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.
Tworzenie kopii zapasowej bazy danych rejestrowania usług AD RMS.
Zbierz informacje SQL.
- Nazwa bazy danych rejestrowania usług AD RMS
- Nazwa klucza Dbo.UserAgent
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