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):
- Suscripción de Azure
- Una base de datos SQL de Azure o un servidor de instancias administradas
- Aprovisione su IR de Azure-SSIS
- Una cuenta de almacenamiento de Azure . Para la configuración personalizada, cargue y almacene su script de configuración personalizado y sus archivos asociados en un contenedor de blobs. El proceso de configuración personalizada también carga sus registros de ejecución en el mismo contenedor de blobs.
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.")
- Descargar e instalar Azure Storage Explorer.
- Conectamos con la cuenta de almacenamiento de Azure y creamos un blob container según los pasos del artículo: https://docs.microsoft.com/en-us/azure/data-factory/how-to-configure-azure-ssis-ir-custom-setup
Una vez creado el blob contaniner, por ejemplo, con nombre ssis-ir-test y con la siguiente estructura:
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:
A continuación, ejecutamos el fichero:
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:
Una vez finalizado, nos aparecerá el siguiente mensaje:
Podemos ir a revisar los logs que nos ha creado en blob de instalación, la carpeta main.cmd.log:
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.
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:
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:
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:
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:
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.
2 comments
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
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.