Mostrando las entradas con la etiqueta SQLServer. Mostrar todas las entradas
Mostrando las entradas con la etiqueta SQLServer. Mostrar todas las entradas

sábado, 12 de octubre de 2019

Change data Capture con Apache NiFi y SQLServer 2017 SP1


miércoles, 9 de octubre de 2019

¿Cómo consumir datos de una tabla CDC en SQL Server?

La consulta que ejecutamos una vez que tenemos el CDC en SQL Server habilitado es:


Esta consulta retorna columna en BLOB/Binario, lo cual, es difícil para convertir con NiFi.



La mejor opción encontrada, fue convertir directamente esa columnas, y toda la consulta ponerla a través de una vista, lo cual, facilita toda la conversión y NiFi hace el tratamiento como cualquier tabla.
Ejemplo de vista



¿Como conectarnos a un SQLServer desde NiFi?

En otro articulo anterior, escribíamos sobre como habilitar el CDC en SQL Server. Una vez que tenemos hecho esto, la idea es poder consumir esos cambios en NiFi. Para poder hacerlo, lo primero es poder configurar una conexión a la base de datos. Para ello, debemos configurar nuestros nodos de NiFi con la conectividad hasta la base de datos. Esto es mediante JDBC. Para ello, debemos bajar a cada nodo el JAR correspondiente a SQL Server. En nuestro caso, simplemente buscamos el JAR llamado sqljdbc4-2.0.jar. Una buena práctica, es instalar y correr NiFi con su propio usuario, por lo tanto, cuando bajemos este JAR a los nodos, ponerlo en un path con permisos de lectura y ejecución para el usuario de NiFi. 
Luego, debemos averiguar, dado que para cada base de datos es diferente, la clase de Java correspondiente al drive, en el caso de SQL Server es com.microsoft.sqlserver.jdbc.SQLServerDriver. 
Por último, pero no menos importante, la cadena de conexión de JDBC. En SQL Server es del tipo jdbc:sqlserver://<SERVER_ADDRESS>;databaseName=<DATABASE_NAME>;

Un ejemplo configurado y funcionando se pone a continuación


Una vez finalizada esta configuración, podemos habilitar el Servicio, y ya tendremos nuestro Pool de Conexión a SQL Server listo para usarse.
 

martes, 8 de octubre de 2019

Habiltando el CDC para SQL Server

Esta es una receta para habilitar el CDC (Change Data Capture) de SQLServer 2017 SP1 sobre Ubunt 16.04. Las versiones de SQLServer que traen esta funcionalidad son las versiones Standart y Enterprise. No las traen las versiones gratuitas, solo las pagas de SQLServer.
En nuestro ejemplo, vamos a realizar sobre una versión Trial de Microsoft SQL Server 2017 SP1.

Algunos puntos importantes dado que este módulo de SQLServer no es muy amigable con los errores, y la documentación que se encuentra suele ser un poco dispersa. Para que nos funcione el CDC tenemos que verificar estos puntos importantes:
  1. La tabla debe contar con una clave primary (Primary Key)
  2. El SQLAgent debe estar instalado.
  3. Debemos habilitar el CDC para la base de datos y para la tabla que queremos rastrear sus cambios


Y esto es todo, es bastante sencillo, siempre y cuando se respeten los puntos anteriores, de lo contrario, genera errores muy genéricos y poco perceptibles de donde está el problema.