Compartir a través de


El identificador de evento 84 se produce en Active Directory Rights Management Services (AD RMS) en Windows Server

En este artículo se proporciona ayuda para corregir un problema en el que el identificador de evento 84 se registra en Active Directory Rights Management Services (AD RMS) en Windows Server.

Número de KB original: 4038927

Síntomas

En un equipo basado en Windows Server que tenga instalado Active Directory Rights Management Services (AD RMS), recibirá el siguiente evento:

Nombre de registro: Application
Origen: Active Directory Rights Management Services
Fecha: Fecha y hora
Identificador de evento: 84
Categoría de tarea: Certificación
Nivel: error
Palabras clave: clásica
Usuario: N/D
Equipo: ipc01.treyresearch.net
Descripción:
Este clúster de Active Directory Rights Management Services (AD RMS) no puede realizar una operación en una de las bases de datos de AD RMS. Asegúrese de que todas las bases de datos de AD RMS funcionan correctamente en la red y que la cuenta de servicio de AD RMS tiene permisos de lectura y escritura en las bases de datos.

Referencia de parámetros
Contexto: 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: error de desbordamiento aritmético que convierte IDENTITY en el tipo de datos smallint.
SqlError-1.Number: 3606
SqlError-0.Number: 8115
SqlError-1.Message: Se produjo un desbordamiento aritmético.
SqlError-1.State: 0
SqlError-0.Server: sql01.treyresearch.net,1441
SqlError-0.Class: 16

Microsoft.RightsManagementServices.LowSeveritySqlException
Mensaje: El Motor de base de datos produjo esta excepción en respuesta a un error que el usuario puede corregir, como un objeto de base de datos o entidad que falta, posible incoherencia de datos, interbloqueo de transacciones, problemas de configuración de seguridad o error de sintaxis de comandos SQL. Examine los detalles de SqlError para obtener más información.
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
Contexto: ComponentBase.LogResults
SqlError-1.Class: 0
SqlError-0.State: 1
SqlError-1.Server: sql01.treyresearch.net,1441
SqlError-0.Message: error de desbordamiento aritmético que convierte IDENTITY en el tipo de datos smallint.
SqlError-1.Number: 3606
SqlError-0.Number: 8115
SqlError-1.Message: Se produjo un desbordamiento aritmético.
SqlError-1.State: 0
SqlError-0.Server: sql01.treyresearch.net,1441
SqlError-0.Class: 16
+ System.Data.SqlClient.SqlException
+ Mensaje: Error de desbordamiento aritmético que convierte IDENTITY en el tipo de datos smallint. Desbordamiento aritmético.
+ 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
+ Contexto: ComponentBase.LogResults

Causa

Este problema se produce porque el proceso de registro de AD RMS no registra un evento en la base de datos de registro.

Hay dos tablas en la base de datos de registro que hacen referencia a un valor UserAgentId. Ambos dbo. UserAgent y dbo. Las tablas ServiceRequest tienen una columna UserAgentId. Estas columnas son de tipo de datos smallint. En cuanto el valor UserAgentId supera el valor máximo (~32.767), la base de datos de registro no se puede actualizar. Cuando una transacción no registra, RMS revertirá la solicitud y producirá un error.

Más información

Al solicitar una licencia de AD RMS, los clientes pasan cadenas de agente con la información básica sobre la aplicación solicitante. El dbo. La tabla UserAgent solo almacena cadenas de agente únicas.

Originalmente, los clientes MSIPC acaban de pasar versiones del sistema operativo, la aplicación, MSIPC y la arquitectura. La tabla en la que las cadenas se almacenan solo mantiene entradas únicas. No debe haber muchas cadenas únicas en la base de usuarios.

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

En algún momento, el cliente MSIPC comenzó a incluir el identificador de proceso (PID) en esa cadena del agente de usuario. Esto hace que cada cadena sea única.

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

Por lo tanto, la tabla que no debe tener muchas cadenas únicas para almacenar ahora tiene muchos miles.

Solución alternativa

Para solucionar este problema, deshabilite el registro en el clúster de AD RMS:

Anule la selección de la opción Habilitar registro en el clúster de A D R M S.

Solución

Para resolver este problema, cambie el tipo de datos de las columnas de smallint a int (entero). Para ello, siga estos pasos:

Nota:

Una base de datos de registro (DB) grande puede tardar mucho tiempo en modificarse y puede provocar problemas de rendimiento de SQL. Por lo tanto, se recomienda realizar una copia de seguridad de la base de datos SQL de la instancia de SQL de producción y restaurarla en una ubicación SQL que no sea de producción. Después, puede realizar la modificación de la base de datos en la ubicación SQL que no es de producción y, a continuación, reemplazar la base de datos de producción.

  1. Realice una copia de seguridad de la base de datos de registro de AD RMS.

  2. Recopile la información de SQL.

    • Nombre de la base de datos de registro de AD RMS
    • Nombre de clave Dbo.UserAgent

    Recopile la información de SQL sobre el nombre de la base de datos de registro de A D R M S y el nombre de clave Dbo.UserAgent.

  3. Genere el script (consulte el ejemplo siguiente).

Script de ejemplo

Nota:

Edite el nombre de la base de datos y el valor de la clave de tabla UserAgent para reflejar el entorno de destino.

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