MSSQL en Windows: error de tabla: vínculo cruzado entre objetos

Microsoft.SQLServer.Windows.EventRule.DBEngine.Table_error__Cross_object_linkage_1_5_Rule (Rule)

La página P_ID1 señala, en una relación primaria-secundaria, a una página (P_ID2) en otro objeto.

Knowledge Base article:

Causas

La página P_ID1 señala, en una relación primaria-secundaria, a una página (P_ID2) en otro objeto.

Información por estado:

Estado 1 (I_ID1 = 0): las páginas proceden de un montón. La página P_ID1 posee un registro de envío que hace referencia a una fila de la página P_ID2.

Estado 1 (I_ID1 > 0): las páginas son de un árbol B del índice. La página P_ID1 cuenta con un puntero de página secundaria que hace referencia a la página P_ID2.

Estado 2: las páginas proceden de un objeto de texto. Una de las siguientes condiciones se cumple:

La página P_ID1 es una página de texto que posee un registro con un puntero secundario que apunta a un registro de la página P_ID2.

La página P_ID1 es una página de índice o de datos que cuenta con una raíz de texto en la fila que apunta a una página de texto P_ID2.

Resoluciones

ERROR DE HARDWARE

Ejecute un diagnóstico de hardware y corrija cualquier problema. Además, examine los registros de sistema y aplicaciones de Microsoft Windows NT, así como el registro de errores de SQL Server, para ver si el problema se ha producido como consecuencia de un error de hardware. Corrija cualquier problema relacionado con el hardware.

Si tiene problemas persistentes de inconsistencia de datos, pruebe a intercambiar los diferentes componentes de hardware para aislar el problema. Compruebe que el sistema no tenga habilitada la caché de escritura en la controladora de disco. Si cree que este es el caso, póngase en contacto con el fabricante de hardware.

Por último, podría resultar útil cambiar a un sistema de hardware completamente nuevo, lo que incluye volver a dar formato a las unidades de disco y reinstalar el sistema operativo.

RESTAURAR DESDE COPIA DE SEGURIDAD

Si el problema no está relacionado con el hardware y tiene una copia de seguridad limpia disponible, úsela para restaurar la base de datos.

DBCC CHECKDB

Si no hay ninguna copia de seguridad limpia disponible, ejecute DBCC CHECKDB sin una cláusula de reparación para determinar el alcance de los daños. DBCC CHECKDB recomendará la cláusula de reparación que se debe usar. A continuación, ejecute DBCC CHECKDB con la cláusula de reparación adecuada para solucionar los daños.

PRECAUCIÓN: si no está seguro del efecto que pueda tener DBCC CHECKDB con una cláusula de reparación sobre sus datos, póngase en contacto con el proveedor de soporte técnico principal antes de ejecutar esta instrucción.

PRECAUCIÓN: esta reparación puede causar la pérdida de datos.

La reparación depende del estado de error:

Estado 1 (montón): El registro de envío de la página P_ID1 se eliminará y se volverán a construir todos los índices no agrupados sobre el montón.

Estado 1 (árbol B): El índice que contiene la página P_ID1 se reconstruirá.

Estado 2: Se eliminarán los dos registros de las páginas P_ID1 y P_ID2.

Si se ejecuta DBCC CHECKDB con una de las cláusulas de reparación pero no se soluciona el problema, póngase en contacto con el proveedor de soporte técnico principal.

Si el error se vuelve a producir y DBCC CHECKDB no ha informado de ningún error, lleve a cabo las restricciones con el script, quite las restricciones y, después, vuelva a crearlas. Si aun así recibe el error, transfiera los datos a una tabla nueva y quite la existente.

Parámetros invalidables

Nombre

Descripción

Valor predeterminado

Habilitado

Habilita o deshabilita el flujo de trabajo.

Intervalo (segundos)

Intervalo de tiempo periódico en segundos en que se ejecuta el flujo de trabajo.

300

Prioridad

Define la prioridad de alerta.

1

Gravedad

Define la gravedad de alerta.

2

Hora de sincronización

Hora de sincronización

 

Tiempo de espera (segundos)

Especifica el tiempo que el flujo de trabajo se puede ejecutar antes de cerrarlo y marcarlo como erróneo.

200

Tiempo de expiración de la conexión de base de datos (segundos)

Se producirá un error en el flujo de trabajo y se registrará un evento si no puede obtener acceso a la base de datos durante el período especificado.

15

Element properties:

TargetMicrosoft.SQLServer.Windows.DBEngine
CategoryEventCollection
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
RemotableTrue
Alert Message
MSSQL en Windows: error de tabla: vínculo cruzado entre objetos
{0}
CommentMom2017ID='{4131B4E6-3994-4D3F-83EA-228232BB9798}';MOM2017GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}

Member Modules:

ID Module Type TypeId RunAs 
_F6DA1507_12AF_11D3_AB21_00A0C98620CE_ DataSource Microsoft.SQLServer.Windows.DataSource.EventCollectionFiltered Default
GenerateAlert WriteAction System.Health.GenerateAlert Default

Source Code:

<Rule ID="Microsoft.SQLServer.Windows.EventRule.DBEngine.Table_error__Cross_object_linkage_1_5_Rule" Target="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2017ID='{4131B4E6-3994-4D3F-83EA-228232BB9798}';MOM2017GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}">
<Category>EventCollection</Category>
<DataSources>
<DataSource ID="_F6DA1507_12AF_11D3_AB21_00A0C98620CE_" Comment="{F6DA1507-12AF-11D3-AB21-00A0C98620CE}" TypeID="Microsoft.SQLServer.Windows.DataSource.EventCollectionFiltered">
<MachineName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</MachineName>
<NetbiosComputerName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/NetbiosComputerName$</NetbiosComputerName>
<InstanceName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</InstanceName>
<ConnectionString>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/ConnectionString$</ConnectionString>
<InstanceVersion>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Version$</InstanceVersion>
<InstanceEdition>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Edition$</InstanceEdition>
<MonitoringType>$Target/Property[Type="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine"]/MonitoringType$</MonitoringType>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<TimeoutSeconds>200</TimeoutSeconds>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
<EventDisplayNumber>8925</EventDisplayNumber>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="Health!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>2</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.SQLServer.Windows.EventRule.DBEngine.Table_error__Cross_object_linkage_1_5_Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>Event ID: $Data/Property[@Name='EventID']$. $Data/Property[@Name='Message']$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>