Freigeben über


Ereignis-ID 84 in Active Directory Rights Management Services (AD RMS) in Windows Server

Dieser Artikel enthält Hilfe zum Beheben eines Problems, bei dem die Ereignis-ID 84 in Active Directory Rights Management Services (AD RMS) in Windows Server protokolliert wird.

Ursprüngliche KB-Nummer: 4038927

Symptome

Auf einem Windows Server-basierten Computer, auf dem Active Directory Rights Management Services (AD RMS) installiert ist, erhalten Sie das folgende Ereignis:

Protokollname: Application
Quelle: Active Directory-Rechteverwaltungsdienste
Datum: Datum/Uhrzeit
Ereignis-ID: 84
Aufgabenkategorie: Zertifizierung
Ebene: Fehler
Schlüsselwörter: Klassisch
Benutzer: N/V
Computer: ipc01.treyresearch.net
Beschreibung:
Dieser Active Directory Rights Management Services (AD RMS)-Cluster kann keinen Vorgang für eine der AD RMS-Datenbanken ausführen. Stellen Sie sicher, dass alle AD RMS-Datenbanken im Netzwerk ordnungsgemäß funktionieren und dass das AD RMS-Dienstkonto Lese- und Schreibberechtigungen für die Datenbanken besitzt.

Parameterreferenz
Kontext: 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: Arithmetischer Überlauffehler beim Konvertieren von IDENTITY in Datentyp smallint.
SqlError-1.Number: 3606
SqlError-0.Number: 8115
SqlError-1.Message: Arithmetischer Überlauf ist aufgetreten.
SqlError-1.State: 0
SqlError-0.Server: sql01.treyresearch.net,1441
SqlError-0.Class: 16

Microsoft.RightsManagementServices.LowSeveritySqlException
Meldung: Die Datenbank-Engine hat diese Ausnahme als Reaktion auf einen Fehler ausgelöst, der vom Benutzer korrigiert werden kann, z. B. ein fehlendes Datenbankobjekt oder eine Fehlende Entität, mögliche Dateninkonsistenzen, Transaktions-Deadlock, Sicherheitseinstellungsprobleme oder SQL-Befehlssyntaxfehler. Weitere Informationen finden Sie in den SqlError-Details.
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
Kontext: ComponentBase.LogResults
SqlError-1.Class: 0
SqlError-0.State: 1
SqlError-1.Server: sql01.treyresearch.net,1441
SqlError-0.Message: Arithmetischer Überlauffehler beim Konvertieren von IDENTITY in Datentyp smallint.
SqlError-1.Number: 3606
SqlError-0.Number: 8115
SqlError-1.Message: Arithmetischer Überlauf ist aufgetreten.
SqlError-1.State: 0
SqlError-0.Server: sql01.treyresearch.net,1441
SqlError-0.Class: 16
+ System.Data.SqlClient.SqlException
+ Meldung: Arithmetischer Überlauffehler beim Konvertieren von IDENTITY in Datentyp smallint. Arithmetischer Überlauf.
+ 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
+ Kontext: ComponentBase.LogResults

Ursache

Dieses Problem tritt auf, da der AD RMS-Protokollierungsprozess kein Ereignis in der Protokollierungsdatenbank protokolliert.

Es gibt zwei Tabellen in der Protokollierungsdatenbank, die auf einen UserAgentId-Wert verweisen. Beides ist der Dbo. UserAgent und der Dbo. ServiceRequest-Tabellen weisen eine UserAgentId-Spalte auf. Diese Spalten sind beide vom Datentyp Smallint. Sobald der UserAgentId-Wert den Maximalwert (~32.767) überschreitet, kann die Protokollierungsdatenbank nicht aktualisiert werden. Wenn eine Transaktion nicht protokolliert wird, führt RMS ein Rollback der Anforderung durch und löst einen Fehler aus.

Weitere Informationen

Beim Anfordern einer Lizenz von AD RMS übergeben Clients Agent-Zeichenfolgen mit den grundlegenden Informationen zur anfordernden Anwendung. Der dbo. Die UserAgent-Tabelle speichert nur eindeutige Agentzeichenfolgen.

Ursprünglich haben die MSIPC-Clients soeben Versionen von Betriebssystem, Anwendung, MSIPC und Architektur übergeben. Die Tabelle, in der die Zeichenfolgen gespeichert werden, behält nur eindeutige Einträge bei. Es sollten nicht viele eindeutige Zeichenfolgen in der gesamten Benutzerbasis vorhanden sein.

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

Irgendwann begann der MSIPC-Client mit der Prozess-ID (PID) für diese Benutzer-Agent-Zeichenfolge. Dadurch wird jede Zeichenfolge eindeutig.

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

Daher hat die Tabelle, die nicht über sehr viele eindeutige Zeichenfolgen verfügen sollte, die gespeichert werden sollen, jetzt viele Tausend.

Problemumgehung

Um dieses Problem zu umgehen, deaktivieren Sie die Protokollierung für den AD RMS-Cluster:

Deaktivieren Sie die Option

Lösung

Um dieses Problem zu beheben, ändern Sie den Datentyp der Spalten von smallint int (ganze Zahl). Gehen Sie hierzu folgendermaßen vor:

Notiz

Eine große Protokollierungsdatenbank (DB) kann lange dauern, bis sie geändert wird und zu SQL-Leistungsproblemen führen kann. Daher empfiehlt es sich, die SQL DB aus der SQL-Produktionsinstanz zu sichern und auf einem NICHTproduktion-SQL-Speicherort wiederherzustellen. Danach können Sie die Datenbankänderung am NICHTproduktiv-SQL-Speicherort durchführen und dann die Produktionsdatenbank ersetzen.

  1. Sichern Sie die AD RMS-Protokollierungsdatenbank.

  2. Sammeln Sie die SQL-Informationen.

    • Der NAME der AD RMS-Protokollierungsdatenbank
    • Der Dbo.UserAgent-Schlüsselname

    Sammeln Sie die SQL-Informationen über den A D R M S-Protokollierungsdatenbanknamen und den Schlüsselnamen Dbo.UserAgent.

  3. Generieren Sie das Skript (siehe das folgende Beispiel).

Beispielskript

Notiz

Bearbeiten Sie den Datenbanknamen und den Schlüsselwert der UserAgent-Tabelle, um die Zielumgebung widerzuspiegeln.

/******************************************************************************* 
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