Antes de comenzar debemos conocer los requisitos previos antes de la personalización de nuestro Azure-SSIS Integration Runtime (más adelante Azure-SSIS IR):

La Edición Enterprise de Azure-SSIS Integration Runtime nos permite utilizar las siguientes opciones avanzas:

  • Cambiar componentes de captura de datos (CDC)
  • Conectores Oracle, Teradata y SAP BW.
  • Conectores y transformaciones de SQL Server Analysis Services (SSAS) y Azure Analysis Services (AAS)
  • Agrupación difusa y transformaciones de búsqueda difusa
  • Extracción de términos y transformaciones de búsqueda de términos
  • Algunas de estas funciones se requieren instalar componentes adicionales para personalizar Azure-SSIS IR.

En nuestra demo vamos a configurar o aprovisionar el IR de Azure-SSIS con PowerShell, para instalar los drivers de Oracle para poder conectar a sus bases de datos, por lo que necesitaremos:

  • Descargar e instalar Azure PowerShell (versión 5.4 o posterior).
  • Preparación de un script personalizado, en nuestro caso reconfigure_azure_ssis_ir test.ps1, en este script tenemos que rellenar los datos de la suscripción de Azure e incluir el container donde están los ficheros:
# Azure Data Factory version 2 information 
# If your input contains a PSH special character, e.g. "$", precede it with the escape character "`" like "`$". 
 
$SubscriptionName = "Azure Test"
#$SubscriptionId = "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
#$TenantId = "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"
 
$ResourceGroupName = "resource-group-test"
# Data factory name. Must be globally unique
$DataFactoryName = "datafac-test" 
$SoftwareSasContainer = "https://test-ir.blob.core.windows.net/ssis-ir-test?st=2018-11-01T10%3A46%3A00Z&se=2019-04-30T10%3A46%3A00Z&sp=rwl&sv=2018-03-28&sr=c&sig=qJhK%2B6wiaHbJB%2B5ZFl5B1MV4L5e4SAk8al7xQQIWefE%3D"
 
# Azure-SSIS integration runtime information. This is a Data Factory compute resource for running SSIS packages
$AzureSSISName = "test-ir"
 
# Edition Azure
$MyAzureSsisIrEdition = "Enterprise"
 
Login-AzureRmAccount
Select-AzureRmSubscription -SubscriptionName $SubscriptionName
#Select-AzureRmSubscription -SubscriptionId $SubscriptionId
#Select-AzureRmSubscription -TenantId $TenantId
 
 
Set-AzureRmDataFactoryV2IntegrationRuntime  -ResourceGroupName $ResourceGroupName `
                                            -DataFactoryName $DataFactoryName `
                                            -Name $AzureSSISName `
                                            -SetupScriptContainerSasUri $SoftwareSasContainer `
                                            -Edition $MyAzureSsisIrEdition `
                                            
write-host("##### Starting your Azure-SSIS integration runtime. This command takes 20 to 30 minutes to complete. #####")
 
Start-AzureRmDataFactoryV2IntegrationRuntime -ResourceGroupName $ResourceGroupName `
                                             -DataFactoryName $DataFactoryName `
                                             -Name $AzureSSISName `
                                            
write-host("##### Completed #####")
write-host("If any cmdlet is unsuccessful, please consider using -Debug option for diagnostics.")

Una vez creado el blob contaniner, por ejemplo, con nombre ssis-ir-test y con la siguiente estructura:

Configuración Personalizada para Azure-SSIS Integration Runtime

Podemos ver que disponemos de la siguiente información:

Carpeta client_64_bits:  Drivers de instalación de Oracle a 64 bits.
Fichero client.rsp:  Archivo de configuración de instalación silenciosa para instalar los conectores de oracle (ver: https://docs.oracle.com/cd/B19306_01/install.102/b14312/advance.htm)
Ficheros sqlnet.ora y tnsnames.ora: Contiene la información del dominio y las conexiones TNS para conectarse a oracle.
El fichero main.cmd contiene el script de configuración personalizada.

El fichero main.cmd queda configurado de la siguiente manera:

@echo off
 
echo "Start main.cmd"
 
time /T
 
REM Install Oracle Net client
REM .\ORA11_x64\client_64_bits\setup.exe -silent -noconsole -ignorePrereq -responseFile "%cd%\client.rsp" -J"-Doracle.install.client.validate.clientSupportedOSCheck=false"
 
.\ORA11_x64\client_64_bits\setup.exe -silent -noconsole -ignorePrereq -responseFile "%cd%\ORA11_x64\client_64_bits\client.rsp" -J"-Doracle.install.client.validate.clientSupportedOSCheck=false"
echo ".\ORA11_x64\client_64_bits\setup.exe -silent -noconsole -ignorePrereq -responseFile "%cd%\ORA11_x64\client_64_bits\client.rsp" -J"-Doracle.install.client.validate.clientSupportedOSCheck=false" "echo "Complete setup"
 
Waitfor something /t 600 >nul 2>&1
 
REM Set TNS_ADMIN variable for SSIS to read tnsnames.ora file
REM the path is same as the path defiend in response file
setx TNS_ADMIN "%SystemDrive%\ORA11_x64\product\11.2.0\client_1\network\admin" /M
echo "set TNS_ADMIN"
 
REM Copy tnsnames.ora which contains the connection information to be used by SSIS package Oracle Connector
REM TNS Service name can also in format of host:port/service_name, which does not use tnsnames.ora 
start /wait xcopy /R /F /Y %cd%\tnsnames.ora %SystemDrive%\ORA11_x64\product\11.2.0\client_1\network\admin\
 
echo "copied tnsnames.ora"
 
REM Copy sqlnet.ora
start /wait xcopy /R /F /Y %cd%\sqlnet.ora %SystemDrive%\ORA11_x64\product\11.2.0\client_1\network\admin\
 
echo "copied sqlnet.ora"
 
REM Change NLS_LANG in Regedit
 
REM echo "Change NLS_LANG en KEY_OraClient11g_home1"
REM reg add HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraClient11g_home1 /v NLS_LANG /t Reg_Sz /d AMERICAN_AMERICA.WE8IS8859P1 /f
REM echo "NLS_LANG en KEY_OraClient11g_home1 OK"
 
REM echo "Change NLS_LANG en WOW6432Node"
REM reg add HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Oracle\KEY_OraClient11g_home1 /v NLS_LANG /t Reg_Sz /d AMERICAN_AMERICA.WE8IS8859P1 /f
REM echo "NLS_LANG en WOW6432Node OK"
 
REM setup will redirect some of the standard output to log files in folder %SystemDrive%\Program Files\Oracle\Inventory\logs\,
REM we need to copy it to %CUSTOM_SETUP_SCRIPT_LOG_DIR% so that it can be uploaded to your blob container
 
echo "Source log dir is %SystemDrive%\Program Files\Oracle\Inventory\logs\*.*"
 
start /wait xcopy /R /F /Y "%SystemDrive%\Program Files\Oracle\Inventory\logs\*.*" "%CUSTOM_SETUP_SCRIPT_LOG_DIR%\" 
 
echo "copied logs"
 
time /T
echo "Complete main.cmd"

Nótese el paso en el que esperamos 600 s (10minutos), aquí lo que hacemos es dar tiempo para que se instale oracle de forma silenciosa para posteriormente copiar los ficheros tnsnames y sqlnet. También, en nuestro caso hemos cambiado el idioma y en las filas finales del script, copiamos el log de la instalación de Oracle al blob para luego poder revisar si la instalación se ha realizado de forma correcta.

A continuación, vamos reconfigurar Azure-SSIS IR con PowerShell utilizando el script de arriba, para el siguiente IR que hemos configurado para la demo. El IR debe de estar en estado parado, ya que durante la ejecución con PowerShell se encargará de levantar el IR y posteriormente llamar al fichero main.cmd para comenzar con la instalación y configuración:

Configuración Personalizada para Azure-SSIS Integration Runtime

A continuación, ejecutamos el fichero:

Configuración Personalizada para Azure-SSIS Integration Runtime

Nos pedirá iniciar sesión en Microsoft Azure. Una vez iniciada comenzará la instalación (ejecutará el archivo main.cmd), en nuestro caso del driver de conexión de Oracle:

Configuración Personalizada para Azure-SSIS Integration Runtime

Una vez finalizado, nos aparecerá el siguiente mensaje:

Configuración Personalizada para Azure-SSIS Integration Runtime

Podemos ir a revisar los logs que nos ha creado en blob de instalación, la carpeta main.cmd.log:

Configuración Personalizada para Azure-SSIS Integration Runtime

Esta carpeta contiene todos logs y crea subcarpetas según el número de nodos que hemos seleccionado al crear el IR.

En nuestro caso podemos ver hay dos IR llamados tvm-20300199029 a continuación del nombre viene el número de nodos del IR: 1 y 2, después la fecha y hora.

Configuración Personalizada para Azure-SSIS Integration Runtime

Para comprobar los logs debemos de revisar ambas carpetas para ver que la instalación fue satisfactoria.

Al abrir el log de un nodo, podemos ver que los ficheros de error tienen un tamaño de 0 bits o no han tenido errores:

Configuración Personalizada para Azure-SSIS Integration Runtime

Si abrimos el resto de ficheros:

Fichero: oraInstall2018-11-22_01-14-40PM.out: Nos dice dónde está el fichero de log.  En el fichero main.cmd se ha especificado que se copien los logs de la instalación de Oracle en este ruta, para poder revisar el estado de la misma:

Configuración Personalizada para Azure-SSIS Integration Runtime

Fichero: installActions2018-11-22_01-14-40PM.log: Contiene la información de instalación de Oracle, al final del fichero se informa el estado de la misma:

Configuración Personalizada para Azure-SSIS Integration Runtime

Por último, el fichero stdout.log, se crea de forma automática a partir de la ejecución main.cmd. En el podemos ver según lo configurado el inicio y fin de la ejecución y el esto de información sobre las ejecuciones:

Configuración Personalizada para Azure-SSIS Integration Runtime

Una vez revisados de los logs y con resultado satisfactorio, ya podríamos ejecutar Paquetes de SSIS con un origen de datos Oracle en Azure.

0 Shares:
2 comments
  1. Cordial saludo desde colombia amigo, mira estoy tratando de hacer exactamente esto pero no me funciona me puedes compartir por favor los archivos que cargaste en el blon ssis-ir-test, te agradezco enormemente

    1. Hola Miller,
      Los archivos del código fuente son exactamente los mismos que los que están el post. ¿Me puedes compartir el error que te está apareciendo para ver si podemos solucionarlo?
      Un cordial saludo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

You May Also Like
Leer más

NOEXPAND y las vistas indizadas

Optimizar vistas indexes NOEXPAND. No siempre el optimizador de consultas de SQL tiene toda la información necesaria para generar el mejor plan de optimización y a veces hay que ayudarle, en este caso los desarrolladores de Navision han utilizado la siguiente opción para salvaguardarse.