Published on

October 20, 2012

Replicando la comprobación de existencia de SQL Server en SSIS

Cuando trabajamos con SQL Server Integration Services (SSIS), hay varias formas de replicar la funcionalidad de las consultas de SQL Server. En este artículo, exploraremos cómo replicar una comprobación de existencia utilizando componentes de SSIS.

Un escenario en el que esta replicación es útil es cuando se trabaja con uniones entre servidores. En lugar de depender de SQL Server para realizar llamadas a servidores vinculados, podemos utilizar componentes de SSIS para saltar entre diferentes servidores de manera más eficiente.

Comencemos por ver un ejemplo de una simple sentencia SELECT que realiza una unión entre servidores para validar datos:

SELECT isbn13, title, author 
FROM dbo.elist e 
WHERE EXISTS (
    SELECT 1 
    FROM [otherserver].store.dbo.products p 
    WHERE e.isbn13 = p.isbn13
)

En SSIS, podemos lograr la misma funcionalidad utilizando el componente Lookup Transformation. Así es cómo podemos descomponer la consulta anterior y utilizar los componentes de SSIS:

  1. Elimine la comprobación de existencia del componente OLEDB Source y simplemente extraiga datos de la tabla de origen.
  2. Agregue un componente Lookup Transformation y configúrelo con la subconsulta.
  3. Conecte los dos componentes y especifique que esta es una comprobación de existencia.

Utilizando este patrón, cada componente en SSIS apunta a su propia fuente Server.Database, lo que hace que el diseño sea autoexplicativo. Esto elimina la necesidad de ocultar servidores dentro de los componentes, proporcionando claridad y transparencia.

Ahora, echemos un vistazo más de cerca al componente Lookup Transformation. Ofrece tres opciones en la parte superior: Full Cache, Partial Cache y No Cache.

La opción predeterminada, Full Cache, selecciona todos los registros de la tabla para las columnas elegidas y los almacena en memoria durante la fase de inicialización del paquete. Sin embargo, los registros deben ser únicos y el número total de registros debe caber en memoria.

Si se trata de tablas muy grandes, se pueden utilizar Partial Cache o No Cache. Partial Cache proporciona a SSIS una cantidad limitada de memoria y no la precarga. Cuando el primer registro desciende desde la fuente, el componente verifica su caché interna. Si no hay coincidencia, consulta la base de datos para recuperar un registro que coincida con la clave. Si hay una coincidencia, ese registro se almacena en la caché, reduciendo la necesidad de posteriores consultas a la base de datos.

No Cache, por otro lado, realiza una búsqueda para cada registro entrante y solo almacena la última clave recuperada. Esto puede ser similar a Partial Cache si la tabla de origen tiene valores únicos.

Finalmente, conecte la salida del componente Lookup Transformation al destino. Puede utilizar el Lookup Transformation como Exists o Not Exists, dependiendo de sus requisitos.

Aquí está el producto final:

SELECT isbn13, title, author 
FROM dbo.elist e 
WHERE EXISTS (
    SELECT 1 
    FROM [otherserver].store.dbo.products p 
    WHERE e.isbn13 = p.isbn13
)

Para replicar un Exists, utilice la salida Lookup Match. Esta salida contendrá registros que tienen una coincidencia en la salida. Si desea un Not Exists, utilice la salida Lookup No Match. Incluso puede utilizar ambas salidas para obtener una lista de registros que existen y registros que no existen.

Al utilizar el componente Lookup Transformation en SSIS, puede mejorar la eficiencia de sus paquetes y lograr la funcionalidad de comprobación de existencia deseada sin depender de uniones entre servidores.

¡Inténtelo y vea si esta técnica le brinda el impulso que estaba buscando para sus paquetes de SSIS!

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.