MPSyncJob produce un error y no se puede implementar el módulo de administración de la biblioteca base del almacén de datos

Este artículo ayuda a solucionar un problema en el que los trabajos de sincronización del módulo de administración fallan y el módulo de administración de la biblioteca base del almacén de datos muestra un estado de implementación de failed después de actualizar el almacén de datos a System Center 2012 Service Pack 1 (SP1).

Versión del producto original:   System Center 2012 Service Manager, System Center 2012 R2 Service Manager
Número de KB original:   2853442

Síntomas

Después de actualizar el almacén de datos a System Center 2012 Service Manager SP1, si el almacén de datos ha estado en ejecución durante más de tres meses, es posible que se produzcan errores en los trabajos de sincronización del módulo de administración. Además, también pueden producirse errores en los trabajos de transformación y carga. El módulo de administración de la biblioteca de base de datos de almacenamiento de datos mostrará un estado de implementación de error en la consola, y muchos otros que dependen de este módulo de administración mostrarán el estado en espera.

Si no ha actualizado el almacén de datos a System Center 2012 Service Manager SP1 y este problema todavía no le afecta, vea la sección de escenario 1 .

Causa

Este error puede producirse debido a una limpieza incorrecta de la base de datos.

Escenario 1: la actualización a SP1 todavía no ha sucedido

Si aún no se ha producido la actualización, ejecute la siguiente consulta DWRepository para obtener los scripts reales de SQL Server que se van a quitar y agregar restricciones de la clave principal de las tablas de hechos en la DWRepository base de datos.

;WITH FactName
AS (
       select w.WarehouseEntityName from etl.WarehouseEntity w
       join etl.WarehouseEntityType t on w.WarehouseEntityTypeId = t.WarehouseEntityTypeId
       where t.WarehouseEntityTypeName = 'Fact'
),FactList
AS (
    SELECT  PartitionName, p.WarehouseEntityName,
            RANK() OVER ( PARTITION BY p.WarehouseEntityName ORDER BY PartitionName ASC ) AS RK
    FROM    etl.TablePartition p
       join FactName f on p.WarehouseEntityName = f.WarehouseEntityName
)
, FactPKList
AS (
    SELECT  f.WarehouseEntityName, a.TABLE_NAME, a.COLUMN_NAME, b.CONSTRAINT_NAME, f.RK,
            CASE WHEN b.CONSTRAINT_NAME = 'PK_' + f.WarehouseEntityName THEN 1 ELSE 0 END AS DefaultConstraints
    FROM    FactList f
    JOIN    INFORMATION_SCHEMA.KEY_COLUMN_USAGE a ON f.PartitionName = a.TABLE_NAME
    JOIN    INFORMATION_SCHEMA.TABLE_CONSTRAINTS b ON a.CONSTRAINT_NAME = b.CONSTRAINT_NAME AND b.CONSTRAINT_TYPE = 'Primary key'
)
, FactWithoutDefaultConstraints
AS (
    SELECT  a.*
    FROM    FactPKList a
    LEFT JOIN FactPKList b ON b.WarehouseEntityName = a.WarehouseEntityName AND b.DefaultConstraints = 1
    WHERE   b.WarehouseEntityName IS NULL AND a.RK = 1
)
, FactPKListStr
AS (
    SELECT  DISTINCT f1.WarehouseEntityName, f1.TABLE_NAME, f1.CONSTRAINT_NAME, F.COLUMN_NAME AS PKList
    FROM    FactWithoutDefaultConstraints f1
    CROSS APPLY (
                    SELECT  '[' + COLUMN_NAME + '],'
                    FROM    FactWithoutDefaultConstraints f2
                    WHERE   f2.TABLE_NAME = f1.TABLE_NAME
                    ORDER BY COLUMN_NAME
                FOR
                   XML PATH('')
                ) AS F (COLUMN_NAME)
)
SELECT  'ALTER TABLE [dbo].[' + f.TABLE_NAME + '] DROP CONSTRAINT [' + f.CONSTRAINT_NAME + ']' + CHAR(13) + CHAR(10) +
        'ALTER TABLE [dbo].[' + f.TABLE_NAME + '] ADD CONSTRAINT [PK_' + f.WarehouseEntityName + '] PRIMARY KEY NONCLUSTERED (' + SUBSTRING(f.PKList, 1, LEN(f.PKList) -1) + ')' + CHAR(13) + CHAR(10)
FROM    FactPKListStr f
ORDER BY f.WarehouseEntityName

Nota

Una vez ejecutada la primera consulta, el resultado será otro conjunto de consultas que deben ejecutarse. Copie los resultados en ventanas de consulta nuevas y ejecute todos ellos.

Una vez restauradas las claves principales predeterminadas, reinicie la implementación del módulo de administración base con errores desde la consola de Service Manager.

Escenario 2: se ha producido la actualización a SP1 sin un error en el trabajo de transformación o carga

Si ha actualizado el sistema a System Center 2012 Service Manager SP1 y solo ha observado el error de implementación del módulo de administración y no de una transformación o carga, puede aplicar los pasos de la solución de escenario 1 .

Escenario 3: la actualización a SP1 se ha producido con un error de trabajo de transformación o carga

Si ha actualizado el sistema a SP1 y ha observado el error del trabajo de transformación o carga, compruebe el DWStagingAndConfig para ver si SystemDerivedMp.Microsoft.SystemCenter.Datawarehouse.Base existe. Para ello, ejecute esta consulta en DWStagingAndConfig :

select * from ManagementPack where mpname like '%SystemDerivedMp.Microsoft.SystemCenter.Datawarehouse.Base%'

Probablemente falta el módulo de administración anterior. Si es así, tendrá que restaurar las copias de seguridad de la base de datos antes de la actualización. Para ello, siga los pasos que se indican a continuación:

  1. Realizar la recuperación ante desastres para las copias de seguridad de bases de datos.
  2. Deshabilite la programación MPSyncJob .
  3. Restaure todas las claves principales que faltan en DWRepository usar el script SQL que se encuentra en el escenario 1.
  4. Reinicie la implementación del módulo de administración base con errores desde la consola.