Compartir a través de


Aplicar los cambios en el destino

En el flujo de datos de un paquete de Integration Services que realice una carga incremental de datos modificados, la tercera y última tarea consiste en aplicar los cambios en el destino. Necesitará un componente para aplicar las inserciones, otro para aplicar las actualizaciones y otro más para aplicar las eliminaciones.

[!NOTA]

La segunda tarea para diseñar el flujo de datos de un paquete que realice una carga incremental de datos modificados consiste en separar las inserciones, las actualizaciones y las eliminaciones. Para obtener más información acerca de este componente, vea Procesar inserciones, actualizaciones y eliminaciones. Para obtener una descripción del proceso general que permite crear un paquete que realice una carga incremental de los datos modificados, vea Mejorar las cargas incrementales con la captura de datos modificados.

Para ver ejemplos completos de extremo a extremo que muestren el uso de la captura de datos modificados en paquetes, vea el ejemplo Captura de datos modificados para el paquete de intervalo especificado y el ejemplo Captura de datos modificados desde el paquete de la última solicitud en Codeplex.

Aplicar las inserciones

Para aplicar las inserciones, utilice un destino de OLE DB, ya que las nuevas filas no requieren ningún tratamiento especial.

Para procesar las inserciones mediante un destino de OLE DB

  1. En la ficha Flujo de datos, agregue un destino de OLE DB.

  2. Conecte la salida que contiene las inserciones de la transformación División condicional al destino de OLE DB.

  3. En el Editor de destino de OLE DB, en la página Administrador de conexión, seleccione las opciones siguientes:

    1. Seleccione o cree un administrador de conexión OLE DB para la base de datos de destino.

    2. Seleccione una opción de Modo de acceso a datos y, a continuación, seleccione la tabla de destino o escriba una instrucción SQL que contenga las columnas de destino.

  4. En la página Asignaciones del editor, asigne las columnas apropiadas de los datos modificados a la tabla de destino.

Aplicar las actualizaciones

Para aplicar las actualizaciones, utilice una transformación Comando de OLE DB. La razón para usar esta transformación es que hay que utilizar una instrucción UPDATE con parámetros para actualizar las filas de una en una con los nuevos valores de las columnas.

[!NOTA]

También puede utilizar los componentes de destino para aplicar las actualizaciones. Al emplear este método, se usan los componentes de destino para guardar las filas en las tablas temporales que se crean para este propósito. Después, se usan las tareas Ejecutar SQL para realizar operaciones de actualización y eliminación masivas con el destino a partir de las tablas temporales.

Para procesar las actualizaciones mediante una transformación Comando de OLE DB

  1. En la ficha Flujo de datos, agregue una transformación Comando de OLE DB.

  2. Conecte la salida que contiene las actualizaciones de la transformación División condicional a la transformación Comando de OLE DB.

  3. En la ficha Editor avanzado para Comando OLE DB, en la ficha Administrador de conexión, seleccione o cree un administrador de conexión OLE DB para la base de datos de destino.

  4. En el Editor avanzado para Comando de OLE DB, en la ficha Propiedades de componente, escriba una instrucción UPDATE con parámetros para SqlCommand.

    Por ejemplo, una instrucción UPDATE para una tabla de clientes podría tener la sintaxis siguiente:

    update CDCSample.Customer
    set TerritoryID  = ?,
        CustomerType  = ?,
        rowguid  = ?,
        ModifiedDate  = ?
    where CustomerID = ?
    
  5. En la ficha Asignaciones de columnas del editor, asigne las columnas apropiadas de los datos modificados a los parámetros de la instrucción UPDATE.

Aplicar las eliminaciones

Para aplicar las eliminaciones, utilice una transformación Comando de OLE DB. La razón para usar esta transformación es que hay que utilizar una instrucción DELETE con parámetros que elimina las filas de una en una basándose en el valor de columna que identifica la fila de forma exclusiva.

[!NOTA]

También puede utilizar los componentes de destino para aplicar las eliminaciones. Al emplear este método, se usan los componentes de destino para guardar las filas en tablas temporales que se crean para este propósito. Después, se usan las tareas Ejecutar SQL para realizar operaciones de actualización y eliminación masivas con el destino a partir de las tablas temporales.

Para procesar las eliminaciones mediante una transformación Comando de OLE DB

  1. En la ficha Flujo de datos, agregue una transformación Comando de OLE DB al flujo de datos.

  2. Conecte la salida que contiene las eliminaciones de la transformación División condicional a la transformación Comando de OLE DB.

  3. Abra el Editor avanzado para configurar la transformación.

  4. En la ficha Editor avanzado para Comando de OLE DB, en la ficha Administrador de conexión, seleccione o cree un administrador de conexión de OLE DB para la base de datos de destino.

  5. En el Editor avanzado para Comando de OLE DB, en la ficha Propiedades de componente, escriba una instrucción DELETE con parámetros para SqlCommand.

    Por ejemplo, una instrucción DELETE para una tabla de clientes podría tener la sintaxis siguiente:

    delete from Customer where CustomerID = ?
    
  6. En la ficha Asignaciones de columnas del editor, asigne la columna apropiada de los datos modificados al parámetro de la instrucción DELETE.

Optimizar inserciones y actualizaciones mediante la funcionalidad MERGE

Puede optimizar el procesamiento de inserciones y actualizaciones si combina ciertas opciones de captura de datos modificados con el uso de la palabra clave MERGE de Transact-SQL. Para obtener más información sobre la palabra clave MERGE, vea MERGE (Transact-SQL).

En la instrucción Transact-SQL que recupera los datos modificados, puede especificar all with merge como el valor del parámetro row_filter_option al llamar a la función cdc.fn_cdc_get_net_changes_<capture_instance>. Esta función de captura de datos modificados funciona con más eficacia cuando no tiene que realizar el procesamiento adicional necesario para distinguir las inserciones de las actualizaciones. Al especificar el valor del parámetro all with merge, el valor __$operation de los datos modificados es 1 para las eliminaciones o 5 para los cambios producidos por las inserciones o actualizaciones. Para obtener más información sobre la función de Transact-SQL utilizada para recuperar los datos modificados, vea Recuperación y descripción de datos de cambios. Una vez recuperados los cambios con el valor del parámetro all with merge, podrá aplicar las eliminaciones y almacenar las filas restantes en una tabla temporal o de ensayo. A continuación, en una tarea Ejecutar SQL de nivel inferior, puede utilizar una única instrucción MERGE para aplicar en el destino todas las inserciones o actualizaciones de la tabla de ensayo.

Icono de Integration Services (pequeño) Manténgase al día con Integration Services

Para obtener las descargas, los artículos, los ejemplos y los vídeos más recientes de Microsoft, así como soluciones seleccionadas de la comunidad, visite la página de Integration Services en MSDN o TechNet:

Para recibir notificaciones automáticas de estas actualizaciones, suscríbase a las fuentes RSS disponibles en la página.