El almacenamiento provisional basado en entidades mds puede producir un error cuando se usa un valor de etiqueta de lote duplicado en SQL Server 2012

Este artículo le ayuda a resolver el problema por el que puede producirse un error en el almacenamiento provisional basado en entidades de Master Data Services (MDS) cuando se usa un valor de etiqueta de lote duplicado en SQL Server 2012.

Versión original del producto: SQL Server 2012
Número de KB original: 2712547

Síntomas

Imagine la siguiente situación:

  • Use el proceso de almacenamiento provisional basado en entidades mds de Microsoft SQL Server 2012 para importar datos en MDS.

  • Rellene varias tablas de almacenamiento provisional de MDS (stg.name) con los datos de almacenamiento provisional mediante la BatchTag columna para identificar el lote.

  • Use el mismo BatchTag valor para rellenar una tabla de almacenamiento provisional independiente que pertenezca a una entidad diferente en un modelo mds diferente.

  • Ejecute los procedimientos almacenados necesarios para iniciar el procesamiento por lotes. O bien, inicie el lote de almacenamiento provisional desde el área funcional de Integration Management en el sitio web de MDS.

Al iniciar el proceso de almacenamiento provisional, se usa uno de los tres procedimientos almacenados:

  • stg.udp_name_Leaf

  • stg.udp_name_Consolidated

  • stg.udp_name_Relationship

Nota:

El <marcador de posición de nombre> es el nombre de la tabla de almacenamiento provisional que se especificó cuando se creó la entidad.

En los ejemplos siguientes se muestra cómo iniciar el proceso de almacenamiento provisional mediante el procedimiento almacenado de almacenamiento provisional:

  • exec mds.stg.udp_entityname1 'versionAdescription',0,'batchtag'

  • exec mds.stg.udp_entityname2 'versionBdescription',0,'batchtag'

En este escenario, recibirá el siguiente mensaje de error al iniciar el proceso de almacenamiento provisional:

MDSERR310029
El estado del lote especificado no es válido.

Además, al comprobar el estado del lote, observa que el lote que tiene el BatchTag valor permanece bloqueado indefinidamente en estado En ejecución.

Nota:

Para comprobar el estado del lote desde el sitio web de MDS, haga clic en Administración de integración y, a continuación, seleccione el modelo para ver el estado o consulte la [mdm].[tblStgBatch] tabla.

Causa

Este problema se produce porque el proceso de almacenamiento provisional basado en entidades MDS comprueba el BatchTag estado independientemente del modelo de MDS.

Solución

Si el lote está bloqueado en estado En ejecución, detenga el proceso por lotes e intente procesarlo de nuevo. Para detener el proceso por lotes, ejecute la instrucción SQL: Exec [mdm].[udpStagingBatchQueueActivate] para resolver este problema, actualice el valor BatchTag de la tabla de almacenamiento provisional de los registros a un nuevo nombre. Además, asegúrese de que el importstatus_ID campo está establecido en 0 para los registros.

Más información

Para obtener más información sobre cómo iniciar el proceso de almacenamiento provisional, vaya al siguiente sitio web: