Síntomas

Imagine el siguiente escenario:

  • Crear un diseño de paquete SQL Server Integration Services (SSIS) que utiliza el componente de servicios de calidad de datos (DQS) la limpieza para limpiar los datos de flujo de datos en un entorno Microsoft SQL Server 2012 o 2014 de Microsoft SQL Server.

  • Mover el paquete SSIS desde un entorno de servidor a un entorno de servidor diferente. Por ejemplo, implementar el paquete SSIS en un servidor diferente.

  • Actualizar el Administrador de conexión de limpieza DQS para que apunte al nuevo nombre de servidor.


En este escenario, recibirá el siguiente mensaje de error:

Error: nombre de tarea de flujo de datos: Microsoft.Ssdqs.Infra.Exceptions.EntryPointException: no existe la Base de conocimientos [Id.: 1000999].
en Microsoft.Ssdqs.Proxy.Database.DBAccessClient.Exec()
en Microsoft.Ssdqs.Proxy.EntryPoint.KnowledgebaseManagementEntryPointClient.DQProjectGetById (id. Int64)
en Microsoft.Ssdqs.Component.DataCorrection.Logic.DataCorrectionComponent.PostExecute()
en Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostPostExecute (contenedor de IDTSManagedComponentWrapper100)

Error: nombre de tarea de flujo de datos: System.NullReferenceException: referencia a objeto no establecida a una instancia de un objeto.
en Microsoft.Ssdqs.Component.DataCorrection.Logic.DataCorrectionComponent.ProcessChunk (ReadOnlyCollection'1 fieldMappings, ReadOnlyCollection'1 registros, CorrectedRecordsStatusStatistics y correctedRecordsTotalStatusStatistics)
en Microsoft.Ssdqs.Component.DataCorrection.Logic.DataCorrectionComponent.ProcessInput (Int32 inputID, PipelineBuffer buffer)
en Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostProcessInput (contenedor de IDTSManagedComponentWrapper100, Int32 inputID, IDTSBuffer100 pDTSBuffer, IntPtr bufferWirePacket)


Causa

Este problema se produce cuando el número de ID de knowledge base DQS, como 1000999, no existe en la instancia de destino de SQL Server en la base de datos DQS_MAIN.

El número variará cada vez que cambie y publicar DQS knowledge base (KB). El número de identificador es un identificador único para cada KB DQS publicada y corresponde a sólo un KB.

Cuando el paquete SSIS se almacena en el archivo DTSX o en la base de datos SSISDB, se recuerda el identificador numérico de la KB DQS en las etiquetas de diseño, como en el ejemplo siguiente:

< propiedad
dataType="System.Int64"
name="KnowledgebaseName"
typeConverter="NOTBROWSABLE">1000999</property>
La expectativa es que el nombre del servidor DQS y el número KB permanecerá coherentes incluso al mover los paquetes SSIS a diferentes servidores.

Para comprobar que ésta es la causa, conectar con el motor de base de datos de SQL Server que hospeda las bases de datos de servicios de calidad de datos y, a continuación, ejecute la consulta siguiente para determinar si existe el ID de KB que se menciona en el mensaje de error:

SELECT * from [DQS_MAIN].[dbo].[A_KNOWLEDGEBASE] where id=1000999


Nota: Si exporta un KB DQS y, a continuación, importar los KB a una instancia DQS, cambiará el número de identificador cuando se importa y se publica a continuación la KB. Por lo tanto, incluso si los elementos de diseño KB son idénticos, el número puede convertirse en sincronizados entre el diseño del paquete SSIS y DQS KB publicados.

Nota: La propiedad KnowledgebaseName del componente limpieza de DQS no es dinámica y no es configurable con el típico configuraciones, expresiones, variables o entornos de SSIS. Se trata de una limitación de diseño de SQL Server 2012 y 2014 de SQL Server.

Solución alternativa

Para evitar este problema, siga estos pasos:

  1. Cambiar el nombre del servidor DQS o implementar el paquete SSIS en un entorno de servidor diferente.

  2. Abra el paquete de servicios de integración en el Diseñador de herramientas de datos de SQL Server.

  3. Busque la tarea de flujo de datos afectados.

  4. Haga doble clic en el componente de depuración DQS para ver el editor personalizado.

  5. Actualizar los KB que aparece en la lista desplegable Base de conocimientos de calidad de datos .

  6. Haga clic en Aceptary, a continuación, guardar el paquete.


Para evitar este problema, debe asegurarse de que señalan a la misma instancia DQS incluso al implementar paquetes SSIS entre varios servidores. Por lo tanto, durante el desarrollo de SSIS y antes de la implementación para un sistema de producción, es aconsejable ajustar los nombres de servidor en el Administrador de conexión y, a continuación, aplique esta solución.

Nota: Aunque puede editar manualmente las etiquetas XML en un diseño de paquete SSIS, no se admiten hacerlo. Puede hacerlo bajo su propio riesgo viendo el código del archivo DTSX en un editor de texto, localizar la etiqueta XML correspondiente y, a continuación, ajuste la propiedad KnowledgeBaseName para corregir el número. Para determinar el número posible, ejecute la consulta siguiente para revisar la columna ID para cada nombre KB correspondiente:

SELECT ID from [DQS_MAIN].[dbo].[A_KNOWLEDGEBASE] where Name like '%KBName%'


¿Necesita más ayuda?

Ampliar sus conocimientos
Explorar los cursos
Obtener nuevas características primero
Unirse a Microsoft Insider

¿Le ha sido útil esta información?

¿Cuál es tu grado de satisfacción con la calidad del lenguaje?
¿Qué ha afectado a tu experiencia?

¡Gracias por sus comentarios!

×