Interfaz de Usuario

Introducción

El interfaz de usuario sirve de asistente para la creación, administración y parametrización de configuraciones de carga. Una vez creadas, se pueden ejecutar desde la propia interfaz de usuario o bien por línea de comandos. Este capítulo se centra en el funcionamiento del interfaz de usuario, y en capítulos posteriores se detallarán las opciones de parametrización y su implicación en la carga de datos.

Los efectos visuales del interfaz de usuario consumen muchos recursos de CPU en máquinas virtuales, por ello, durante las ejecuciones, todos los efectos visuales se paralizan con el fin de no sobrecargar los recursos del sistema innecesariamente. Además, el botón "Stop/Start" permite que dichos efectos sean desactivados o activados a voluntad.

Aunque la ventana no dispone de los tradicionales bordes, en ella se pueden realizar las acciones típicas:

La "bola" de la esquina superior derecha, tiene ocultos en su interior los botones de "Maximizar" o "Restaurar", "Salir" y "Minimizar", en ese orden y de arriba a abajo. Al pasar por encima de los botones con el ratón, se muestran los tooltips correspondientes indicando las acciones que realiza el botón oculto.

También puede redimensionar la ventana situándose en los bordes de la ventana, y cuando el cursor cambie de forma, podrá cambiar el tamaño de la ventana.

El interfaz de usuario se compone de diferentes "paneles", los cuales serán mostrados u ocultados en función de las acciones del usuario. Sin embargo, el Panel de Resultados siempre estará visible. Allí, se informará de determinados detalles a tener en cuenta en las opciones de configuración, se mostrará el detalle de la ejecución de las configuraciones y se mostrará, también, los posibles errores y excepciones que se pudiesen producir.

Panel Administración de Configuraciones

En la figura siguiente se muestra el "Panel de Administración de Configuraciones". El panel administra las configuraciones y su parametrización. No administra las tablas ni el contenido de las mismas que Insert Bulk Bestia necesita en el origen y destino.

Panel Administración de Configuraciones - 1

Panel Administración de Configuraciones - 1

Los botones, se activarán/desactivarán en función de las acciones que el usuario vaya realizando. Sin embargo, acciones que conllevan la alteración del fichero ".ini" que contiene las configuraciones, y que no han sido almacenadas en dicho fichero, hacen que muchos botones queden deshabilitados. Por lo que será necesario "Guardar" o "Cancelar" dichas alteraciones para que se habiliten los botones deseados.

  • Añadir

    Permite la creación de una nueva configuración. Solicitará un nombre, que no puede contener los siguientes caracteres: , (coma), = (igual), " " (espacio en blanco) y # (almohadilla).

    La nueva configuración se creará con los valores por defecto y sin cadenas de conexión al origen y destino. Si las tablas usadas por Insert Bulk Bestia no existen en el origen y destino, no serán creadas hasta que no se ejecute la configuración. Si ya existiesen, no se rellenan con datos para dicha configuración hasta que no se ejecute.

    Se deshabilitarán los botones "Editar" y "Ejecutar" hasta que se guarden los cambios o se cancelen.

  • Lista de Configuraciones

    A medida que se vayan creando configuraciones, estas irán apareciendo en el "Panel de Administración de Configuraciones". Cada configuración tiene asociada una casilla de verificación, que indica si dicha configuración se desea ejecutar cuando se pulse el botón "Ejecutar". En la figura, las configuraciones "Vacía2" y "Vacía3" se ejecutarán en dicho orden cuando se pulse sobre "Ejecutar". Cuando se activa o se desactiva una de estas casillas, se deshabilitarán los botones "Editar" y "Ejecutar" hasta que se guarden los cambios o se cancelen.

    Pulsando sobre una determinada configuración, ésta queda seleccionada para poder trabajar con ella. En la figura, la configuración "Vacía3" es la seleccionada, y podrá editarse, copiarse, eliminarse, y cambiar el orden en que se ejecute con respecto al resto de configuraciones.

Panel Administración de Configuraciones - 2

Panel Administración de Configuraciones - 2

  • Copiar

    Copia la configuración seleccionada con un nuevo nombre. Solamente copia las opciones de la configuración, no copia el contenido de las tablas (origen y destino) de la configuración copiada a la nueva configuración.

    Se deshabilitarán los botones "Editar" y "Ejecutar" hasta que se guarden los cambios o se cancelen.

  • Eliminar

    Elimina la configuración seleccionada en la "Lista de Configuraciones". No elimina las tablas que Insert Bulk Bestia haya creado en el origen y destino, ni tampoco elimina los datos que dichas tablas tengan asociados a la configuración eliminada.

    Se deshabilitarán los botones "Editar" y "Ejecutar" hasta que se guarden los cambios o se cancelen.

  • Editar

    Edita las opciones de ejecución de la configuración seleccionada. Desaparecerá el "Panel de Administración de Configuraciones" y aparecerá el "Panel de Conexiones", donde podrá comenzar a parametrizar dicha configuración.

    Volverá al "Panel de Administración de Configuraciones" tras "Guardar" los cambios realizados en la parametrización o bien "Cancelar" los mismos.

  • Subir/Bajar

    Alteran el orden en que se ejecutarán las configuraciones.

  • Cancelar

    Cancela las modificaciones realizadas en el "Panel de Administración de Configuraciones" volviendo a recargar el contenido del fichero ".ini" donde se encuentran almacenadas. Se habilitarán los botones "Editar" y "Ejecutar" si se cumplen las condiciones adecuadas.

  • Guardar

    Guarda en el fichero ".ini" las modificaciones realizadas en el "Panel de Administración de Configuraciones". Se habilitarán los botones "Editar" y "Ejecutar" si se cumplen las condiciones adecuadas.

  • Salir

    Cierra la aplicación. Si hay modificaciones pendientes, solicita confirmación al operador.

  • Stop/Start

    Para o arranca los efectos visuales con el fin de disminuir los recursos que Insert Bulk Bestia consume. Durante la ejecución de las cargas de datos, estos efectos visuales son parados de forma automática. Al finalizar la carga, se vuelven a activar los efectos visuales.

  • Ejecutar

    Se ejecutan las configuraciones que tienen marcada su casilla de verificación y en el orden en que aparecen en la "Lista de Configuraciones". Al pulsar dicho botón, se activa el "Panel de Resultados", donde se van mostrando las acciones que Insert Bulk Bestia realiza en cada momento.

Panel de Resultados

Se compone de una ventana de texto donde se presenta información variada al usuario. En la figura siguiente, por ejemplo, se muestra cómo parametrizar la cadena de conexión a SQL Server, concretamente el parámetro "PacketSize" y también se indica cómo crear un usuario con los permisos adecuados para que Insert Bulk Bestia funcione correctamente.

Panel de Resultados - 1

Panel de Resultados - 1

Dicho panel, posee un botón "Clear" que borra el texto presentado. En dicho panel, funcionan los aceleradores típicos, como Ctrl-A para seleccionar todo el texto, o Ctrl-C para copiar el texto seleccionado.

Además de este panel, Insert Bulk Bestia genera varios ficheros de "trazas":

  • InsertBulkBestia.log e InsertBulkBestia_Error.log: Son ficheros de log donde se van volcando las acciones realizadas por Insert Bulk Bestia. El segundo fichero, contiene información detallada de los errores que se pudiesen producir en la aplicación. Si desea aportar información sobre dichos errores, este fichero es el que debería enviar al sitio web para su posterior análisis y corrección de las posibles incidencias.
  • InsertBulkBestia_NombreConfiguracion.log e InsertBulkBestia_Error_NombreConfiguracion.log: Son ficheros de log creados para cada configuración que se ejecute. Al igual que los anteriores, el segundo fichero contiene información detallada de los errores que se pudiesen producir durante la ejecución de una determinada configuración de carga de datos. Si desea aportar información sobre dichos errores, este fichero es el que debería enviar al sitio web para su posterior análisis y corrección de las posibles incidencias.

Panel de Conexiones

Este panel será el que aparezca tras pulsar el botón "Editar" cuando se tenga seleccionada una configuración. A partir de aquí, se comienza la parametrización de dicha configuración.

Panel de Conexiones - 1

Panel de Conexiones - 1

En primer lugar, se deben suministrar las cadenas de conexión a las bases de datos origen y destino. Para ello dispone de una asistente que le ayudará a establecerlas.

Insert Bulk Bestia impone determinadas propiedades a la cadena de conexión para que pueda funcionar correctamente:

Asynchronous Processing=True;MultipleActiveResultSets=True;Application Name="Insert Bulk Bestia";ApplicationIntent=ReadWrite.

Las cadenas de conexión se almacenarán en el fichero ".ini" SIN CIFRAR , por lo que quedará comprometida su seguridad ya que en ellas se almacenará la contraseña. En futuras versiones, se solventará esta situación.

Tras el establecimiento de las cadenas de conexión, en el "Panel de Resultados" aparece información relevante relativa a la eficiencia de las conexiones y a los requerimientos que debe poseer el usuario utilizado para las conexiones.

  • PacketSize

    Este parámetro es un gran desconocido, incluso para Microsoft, ya que no suele aportar mucha información sobre su utilidad e influencia en la eficiencia de las conexiones a la Base de Datos. Aquí, se muestra la información útil que se ha encontrado respecto a dicho parámetro, que es la misma que muestra la aplicación:


CADENA DE CONEXIÓN

Parámetro: "PacketSize"

El valor de este parámetro influye tanto en el rendimiento de la red como en el de SQL Server. Microsoft tiene varios artículos con recomendaciones para este parámetro: http://microsoft-ssis.blogspot.com.es/2013/04/performance-best-practice-network.html y https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.packetsize.aspx

En SQL Server se configura como se indica en: https://msdn.microsoft.com/en-us/library/ms177437(v=sql.120).aspx

También se debería tener en cuenta el valor de MTU de la red, de forma que se aprovechase totalmente la capacidad de los paquetes de red evitando ineficiencias. Este valor se puede encontrar probando con diferentes valores en el comando:

ping servername -f -l PacketSize

Ejemplo:

ping servername -f -l 1472
   Respuesta desde servernama: bytes=1472 tiempo=8ms TTL=120
ping servername -f -l 1473
   Es necesario fragmentar el paquete pero se especificó DF.

Así, una recomendación sería sustituir el valor por defecto de 8000 por 7360 (= 1472 * 5) y reconfigurar SQL Server para admitir este tamaño de paquete. Aunque, según indica Microsoft, para operaciones de "bulk copy" se recomienda que este valor sea el mayor posible.

También se recomienda revisar la configuración de red para admitir tramas "jumbo mtu" con el fin aumentar su rendimiento.
Ejemplo: https://en.wikipedia.org/wiki/Jumbo_frame aunque la mayoría de las veces no es aconsejable habilitarlas.

  • Permisos de Usuario

    Para poder realizar determinadas tareas en la base de datos, el usuario utilizado para conectarse debe poseer determinados permisos. En el "Panel de Resultados", tras establecer una cadena de conexión, se muestra un ejemplo de cómo crear un usuario para poder utilizarlo con Insert Bulk Bestia y que posea los permisos adecuados. Dicho script, se muestra a continuación:


CREACION DE UN USUARIO PARA IBB

--En el ejemplo aquí descrito se creará un usuario "UserIbb".
--Los scripts se deberán ejecutar con permisos de "sysadmin".
--
--Se parte de un LOGIN con rol 'public' en el servidor:
-- Nota: Poner una contraseña segura.
USE [master]
GO
CREATE LOGIN [UserIbb] WITH PASSWORD=N'UserIbb', DEFAULT_DATABASE=[master],
    DEFAULT_LANGUAGE=[Español], CHECK_EXPIRATION=OFF, CHECK_POLICY=ON
GO


--Se crea el usuario correspondiente en la Base de Datos master
-- Es necesario crearlo aquí para introducir el certificado. Más tarde, si se desea, se puede
-- eliminar, aunque podría volver a ser necesario para la actualización de
-- la aplicación.
USE [master]
GO
CREATE USER [UserIbb] FOR LOGIN [UserIbb] WITH DEFAULT_SCHEMA=[dbo]
GO


--Se le asignan los permisos de suplantar al usuario 'dbo' en [master]:
-- IBB añadirá el Certificado [InforCustomCryptCert] a [master] y a partir
-- de él, creará un Login(Inicio de sesión) sobre ese Certificado con el
-- que poder ejecutar Assemblies firmados y autenticados con dicho
-- Certificado.
--    Es el procedimiento adecuado sin tener que poner la Base de Datos en
--    un estado inseguro: TRUSTWORTHY ON
--
--También se desea que los Assemblies instalados puedan ser utilizados por
--desarrollos ajenos a IBB, por lo que se le asignará el usuario 'dbo'
--como propietario.
USE [master]
GO
GRANT IMPERSONATE ON USER::[dbo] TO [UserIbb]
GO
USE [master]
GO
GRANT ALTER ANY LOGIN TO [UserIbb]
GO


--Se le asignan permisos para alterar la configuración del servidor
--ya que IBB debe poder ejecutar ensamblados de .NET
USE [master]
GO
GRANT ALTER SETTINGS TO [UserIbb]
GO


    --Las instrucciones que se van a ejecutar en IBB son:
    USE [master]
    EXEC sp_configure 'show advanced options', 1
    RECONFIGURE
    GO
    USE [master]
    EXEC sp_configure 'clr enabled', 1
    RECONFIGURE
    GO

--Los Assemblies que ejecutan tareas en paralelo necesitan permisos para
--ver el número de CPUs
USE [master]
GO
GRANT VIEW SERVER STATE TO [UserIbb]
GO


USE [master]
GO
GRANT CREATE CERTIFICATE TO [UserIbb]
GO
USE [master]
GO
GRANT ALTER ANY CERTIFICATE TO [UserIbb]
GO
USE [master]
GO
GRANT CREATE ASSEMBLY TO [UserIbb]
GO
USE [master]
GO
GRANT ALTER ANY ASSEMBLY TO [UserIbb]
GO
USE [master]
GO
GRANT EXTERNAL ACCESS ASSEMBLY TO [UserIbb] WITH GRANT OPTION
GO
USE [master]
GO
GRANT UNSAFE ASSEMBLY TO [UserIbb] WITH GRANT OPTION
GO


--Se crea el usuario correspondiente en las Bases de Datos Origen y Destino
USE [BaseDatosOrigenDestino]
GO
CREATE USER [UserIbb] FOR LOGIN [UserIbb] WITH DEFAULT_SCHEMA=[dbo]
GO


--Se le asignan los permisos de suplantar al usuario 'dbo' en ambas Bases
--de Datos.
-- Ello permitirá que los objetos que se creen pertenezcan al usuario
-- 'dbo', además de al usuario "UserIbb". De esta forma los objetos
-- podrán ser utilizados por otros usuarios.
-- También permite crear esquemas con la sentencia:
--    CREATE SCHEMA esquema AUTHORIZATION dbo
USE [BaseDatosOrigenDestino]
GO
GRANT IMPERSONATE ON USER::[dbo] TO [UserIbb]
GO


--Se le asignan los roles 'db_datareader' y 'db_datawriter' y 'db_ddladmin'
--al usuario en ambas Bases de Datos (Origen y Destino)
USE [BaseDatosOrigenDestino]
GO
ALTER ROLE [db_datareader] ADD MEMBER [UserIbb]
GO
ALTER ROLE [db_datawriter] ADD MEMBER [UserIbb]
GO
ALTER ROLE [db_ddladmin] ADD MEMBER [UserIbb]
GO


--Se le asignan los permisos para poder ejecutar procedimientos almacenados
--al usuario en ambas Bases de Datos (Origen y Destino)
USE [BaseDatosOrigenDestino]
GO
GRANT EXECUTE TO [UserIbb]
GO
USE [BaseDatosOrigenDestino]
GO
GRANT EXECUTE ON SCHEMA::[dbo] TO [UserIbb]
GO


USE [BaseDatosOrigenDestino]
GO
GRANT CREATE ASSEMBLY TO [UserIbb]
GO
USE [BaseDatosOrigenDestino]
GO
GRANT ALTER ANY ASSEMBLY TO [UserIbb]
GO


--Se le asignan los permisos para poder ver el estado de la Base de Datos
--en ambas Bases de Datos (Origen y Destino)
USE [BaseDatosOrigenDestino]
GO
GRANT VIEW DATABASE STATE TO [UserIbb]
GO


Panel Origen

En el "Panel de Conexiones", al pulsar sobre el botón "Parametrizar Origen", se muestra el "Panel Origen" que permite decidir qué acciones se realizarán en el origen. Como se puede apreciar en la figura, cada opción tiene asociado un tooltip con exhaustiva información.

Panel Origen - 1

Panel Origen - 1

  • Crear Objetos en Origen

    En el capítulo Estrategia de Copia de Datos, se supuso que hay una base de datos principal (producción), que se desea replicar en el resto de entornos. Si Insert Bulk Bestia puede crear sus objetos en dicha base de datos, el operador podrá realizar allí sus adaptaciones. Posteriormente, al replicar la estructura del origen, dichas adaptaciones serán llevadas al resto de destinos. De esta forma, el control de dichas adaptaciones está centralizado en la base de datos principal.

    Si por el contrario, no se crean dichos objetos en la base de datos origen, Insert Bulk Bestia debe obtener la información del origen de otra forma. La extraerá de la base de datos de destino, ya que se parte de la hipótesis de que ambas bases de datos son idénticas o similares.

    Nota: Este comportamiento cambiará en futuras versiones para así poder ampliar los posibles orígenes de datos, como Oracle, etc.

    No crear los objetos en el origen también tiene como consecuencia que las adaptaciones realizadas por el operador para la copia de datos deberá realizarlas en el destino. Por tanto, cuando replique la estructura de la base de datos origen en el destino, perderá dichas adaptaciones.

    • Actualizar Lista de Secuencias

      Ejecuta el procedimiento almacenado ibb.Cargar_Tablas_Actualiza_Secuencias indicando que es la base de datos origen: Añade a ibb.Cargar_Tablas_Secuencias registros con las nuevas secuencias y elimina los registros correspondiente a las que han desaparecido. El operador deberá indicar cómo se reinicializan las nuevas secuencias.

    • Actualizar Lista de Tablas

      Ejecuta el procedimiento almacenado ibb.Cargar_Tablas_Actualiza indicando que es la base de datos origen. La utilidad de este parámetro se puede comprender con la descripción realizada en el apartado 1º Lectura de la Estructura del Origen.

      • Actualizar Cláusula SELECT

        Parámetro que se le pasa al procedimiento almacenado ibb.Cargar_Tablas_Actualiza para indicarle que actualice las cláusulas SELECT de cada tabla por si éstas han sufrido modificaciones desde la última vez que se actualizó esta tabla. La utilidad de este parámetro se puede comprender con la descripción realizada en los apartados 1º Lectura de la Estructura del Origen y 3º Actualización del Destino con la Estructura del Origen.

        Se ha de tener en cuenta que activar este parámetro hará que las modificaciones realizadas manualmente en las cláusulas SELECT se pierdan, pero si no lo activa, perderá las nuevas modificaciones que se hayan realizado en la base de datos. Para ello, las acciones personalizadas en el origen son la alternativa perfecta para realizar las modificaciones deseadas en las cláusulas SELECT y WHERE. De esta forma, por un lado, la tabla se actualizará con los cambios que se hayan producido en el origen, y por otro, se conservarán las modificaciones que usted desea realizar.

    • Ejecutar Acciones Personalizadas

      Ejecuta el procedimiento almacenado ibb.Cargar_Tablas_Acciones_Programables_Origen. En él, el operador puede programar acciones personalizadas que alteren las dos tablas anteriores tras su actualización. Por ejemplo, puede clasificar automáticamente las nuevas tablas que aparezcan, o bien, puede cambiar las cláusulas SELECT de forma automática.

    • Copiar Lista de Secuencias al Destino

      Indica copiar el contenido de ibb.Cargar_Tablas_Secuencias desde el origen a ibb.Cargar_Tablas_Secuencias_Copia en el destino.

      Marcar esta opción hace que automáticamente se marque la opción Actualizar Lista de Secuencias en el "Panel Destino".

    • Copiar Lista Tablas al Destino

      Indica copiar el contenido de ibb.Cargar_Tablas desde el origen a ibb.Cargar_Tablas_Copia_Origen en el destino. La utilidad de este parámetro se puede comprender con la descripción realizada en el apartado 2º Traspaso de la Estructura del Origen al Destino.

Panel Destino

En el "Panel de Conexiones", al pulsar sobre el botón "Parametrizar Destino", se muestra el "Panel Destino", que permite decidir qué acciones se realizarán en el destino.

Panel Destino - 1

Panel Destino - 1

  • Actualizar Lista de Secuencias

    Ejecuta el procedimiento almacenado ibb.Cargar_Tablas_Actualiza_Secuencias indicando que es la base de datos destino. La utilidad de este parámetro se puede comprender con la descripción realizada en los apartados 3º Actualización del Destino con la Estructura del Origen y 4º Actualización del Destino con la Estructura del Destino.

  • Actualizar Lista de Tablas

    Las Tablas a Copiar tienen el mismo planteamiento que las secuencias: que el operador tenga centralizadas en el origen las alteraciones que desea trasladar al resto de destinos.

    Sin embargo, aquí es más fácil de entender, ya que en la tabla ibb.Cargar_Tablas existen una serie de campos para el origen y otra serie de campos para el destino. Con esta opción, se le está indicando que en el destino se deben actualizar los campos correspondientes al origen con la información proveniente del origen. Y la del destino que se actualice con la estructura que posea la base de datos de destino, añadiendo o eliminando tablas según el destino haya sufrido modificaciones.

    • Actualizar Cláusula SELECT

      Parámetro que se le pasa al procedimiento almacenado ibb.Cargar_Tablas_Actualiza para indicarle que actualice las cláusulas SELECT de cada tabla por si éstas han sufrido modificaciones desde la última vez que se actualizó esta tabla. La utilidad de este parámetro se puede comprender con la descripción realizada en los apartados 1º Lectura de la Estructura del Origen y 3º Actualización del Destino con la Estructura del Origen.

      Se ha de tener en cuenta que activar este parámetro hará que las modificaciones realizadas manualmente en las cláusulas SELECT se pierdan, pero si no lo activa, perderá las nuevas modificaciones que se hayan realizado en la base de datos. Para ello, las acciones personalizadas en el destino son la alternativa perfecta para realizar las modificaciones deseadas en las cláusulas SELECT y WHERE. De esta forma, por un lado, la tabla se actualizará con los cambios que se hayan producido en el destino, y por otro, se conservarán las modificaciones que usted desea realizar.

  • Stop Tras Actualizar Tablas

    La primera vez que se ejecuta una configuración, lo normal es que se desee comprobar qué datos se van a cargar y cómo se van a cargar. Activando esta opción, la ejecución de la carga se para en este punto (punto 8 del aparatado Algoritmo de Copia de Datos), permitiendo al usuario revisar la carga.

    Este es el momento e que el usuario debería programar las acciones personalizadas, tanto en el origen como en el destino, para personalizar la carga. Una vez realizadas estas acciones, puede volver a ejecutar la configuración sin marcar esta opción, con lo que la carga de datos se realizaría ya con la adaptación deseada.

  • Ejecutar Acciones Personalizadas Iniciales

    Marcando esta opción, se ejecuta el procedimiento almacenado ibb.Cargar_Tablas_Acciones_Programables_Destino_Iniciales. En él, el operador puede programar acciones personalizadas que alteren las dos tablas anteriores tras su actualización. Por ejemplo, puede clasificar automáticamente las nuevas tablas que aparezcan, o bien, puede cambiar las cláusulas SELECT de forma automática.

  • Vaciado Previo de Tablas

    Normalmente, cuando se ejecuta una configuración, se realizará un borrado de las tablas antes de proceder a su carga. Sin embargo, habrá ocasiones en que sólo desee cargar una determinada tabla y sólo unos determinados registros, indicados en las sentencias WHERE, sin vaciar la tabla de destino. Desmarcando esta opción, no se realiza el vaciado previo de tablas.

  • Sólo Copiar Datos

    NO OPERATIVO

    Ante determinados problemas en la base de datos origen, como una excesiva fragmentación de los ficheros de base de datos, o algún otro problema por el estilo, es útil disponer de soluciones del tipo:

    Copiar lo más rápidamente posible los datos desde una base de datos origen a otro destino. Con Insert Bulk Bestia sólo se realizaría la copia de datos, sin la regeneración de la estructura del destino, ahorrándose así un considerable tiempo en bases de datos de gran tamaño. Posteriormente, reparar la base de datos origen, y volver a recuperar los datos desde la base de datos de destino.

    Con el fin de aumentar la eficiencia para el retorno de los datos a la base de datos origen, Insert Bulk Bestia si regeneraría todos los índices de las tablas segmentadas.

    • Eliminar Registros Foreing Keys

      Cuando está marcado, eliminarán los registros necesarios de la tabla hija para poder levantar una Foreing Key. Es útil cuando los datos que se están copiando proceden de una base de datos que se encuentra ONLINE, ya que, durante la copia, es posible que en primer lugar se copien los registros de la tabla padre. En el tiempo que transcurre hasta que se copian los registros de la tabla hija, se pueden producir insercciones en la tabla padre y en la hija. En ese caso, la tabla hija tendrá registros huérfanos, lo cual hará que la Foreing Key no se pueda levantar.

      Si no está marcado, indica que no levantarán aquellas Foreing Keys que tengan registros huérfanos en la tabla hija.

  • Ejecutar Acciones Personalizadas Finales

    Marcando esta opción, se ejecuta el procedimiento almacenado ibb.Cargar_Tablas_Acciones_Programables_Destino_Finales. En él, el operador puede programar acciones personalizadas que alteren los datos copiados, como enmascarar de forma manual determinados datos, o bien, cambiar los paths almacenados en tablas.

Panel Carga

En el "Panel de Conexiones", al pulsar sobre el botón "Parametrizar Carga", se muestra el "Panel Carga", que permite decidir cómo se realizará la transferencia de datos:

Panel Carga - 1

Panel Carga - 1

  • Selección de Tablas por Campo "Clasificación"

    Insert Bulk Bestia carga todas las tablas que tienen el campo 'CargarTabla' a 1 en la tabla ibb.Cargar_Tablas Mediante esta opción se le indica a Insert Bulk Bestia que marque con un 1 aquellas tablas cuyo campo 'ClasificacionTabla' coincida con los indicados en la siguiente opción. Si se desmarca esta opción, será responsabilidad del usuario marcar las tablas que desea cargar y de realizar las inicializaciones pertinentes. Dicha acción la puede realizar con las ibb.Cargar_Tablas_Acciones_Programables_Destino_Iniciales.

    • Clasificaciones de Tablas para Cargar

      Lista de valores del campo 'ClasificacionTabla' de la tabla ibb.Cargar_Tablas separados por ,(coma) que servirá para indicar las tablas que se desean cargar.

      NULL(sin texto) si no se desea realizar ninguna selección automática de tablas a cargar. Sin embargo, se realizan las inicializaciones pertinentes.

  • Índices

    • Tamaño (KB) mínimo para no eliminar índice Cluster

      Tamaño en KB que ocupan todos los índices de una determinada tabla a partir del cual no se elimina el índice cluster de dicha tabla. El resto de índices si se eliminan. Este parámetro se debe fijar de forma experimental, ya que dependiendo del hardware disponible es posible que en tablas muy grandes se obtengan mayores prestaciones no eliminando el índice cluster.

      Valores posibles:

      0 -> Deja todos los índices cluster

      NULL -> Elimina todos los índices cluster

      >0 -> Elimina los índices cluster de aquellas tablas cuyo espacio en KB ocupado por los índices sea inferior al indicado

    • Usar TEMPDB para Crear Índices

      Utilizar la base de datos Tempdb para ordenar los índices cuando se construyen.

      Este parámetro, junto con el siguiente, son claves para mejorar la continuidad de los índices, es decir, mejorar las prestaciones finales de la Base de Datos.

      Si se marca esta opción, se reduce el tiempo de la construcción de los índices a costa de utilizar espacio en la Base de Datos Tempdb, por lo que ésta debe estar dimensionada de forma adecuada. Además, mejora la continuidad de los mismos.

      No se debe marcar esta opción cuando el tamaño de esta base de datos es crítico o es utilizada por otras bases de datos cuyo uso es crítico y no se desea hacer un uso intensivo de esta base de datos.

    • Creación de Índices con MAXDOP = 0 ó MAXDOP = 1

      Utilizar el máximo grado de paralelismo en la creación de índices o serializar dicho proceso.

      Si se marca esta opción se reduce el tiempo de la construcción de los índices a costa de utilizar todas las CPU disponibles. Sin embargo, empeora la continuidad de los índices, empeorando las prestaciones finales de la Base de Datos.

      Nota: Como alternativa a esta configuración, se recomienda poner este parámetro a False y utilizar la construcción de índices en paralelo. De esta forma, se utilizará cada CPU para construir un sólo índice, pero se construirán en paralelo tantos índices como CPU disponibles en el servidor.

    • Creación de Índices en Paralelo

      Utilizar las librerías integradas en SQL Server de Insert Bulk Bestia para la ejecución de procesos en paralelo Es posible que determinados tipos de licencia no contemplen esta posibilidad.

      Si se marca esta opción se crean los índices en paralelo haciendo un uso muy intensivo de CPU y Discos.

  • Lotes de Registros

    • Tamaño del Lote

      Nº de registros que son enviados al destino en cada lote.

      Un valor de 0 indica que se envían en un lote todos los registros desde el origen al destino. Si se indica 'Usar Transacciones Internas', cada lote es enviado al destino en una transacción independiente.

      Nota: El uso de transacciones grandes implica que en la Base de Datos Destino, el Registro de Transacciones debe está correctamente dimensionado. También implica un mayor tiempo en la copia de datos. En caso de error, los registros del lote no serán insertados.

    • Usar Transacciones Internas

      Usar una transacción para cada lote de registros enviados al Destino.

    • Nº de Reintentos para la Carga de Datos

      Insert Bulk Bestia puede reintentar (tantas veces como se indique en este parámetro) la carga de aquellas tablas (o segmentos) que han fallado. Está pensado para protegerse ante cortes de Red.

      Si 'Tamaño del Lote' es distinto de 0, Insert Bulk Bestia vaciará la tabla (o segmento) y lo volverá a intentar. Si lo que desea es añadir registros a una determinada tabla, debe indicar un 'Tamaño del Lote' de 0 y marcar la opción 'Usar Transacciones Internas'. En ese caso, cuando se produzca un fallo, la tabla Destino quedará en su estado original, ya que Insert Bulk Bestia no vaciará dicha tabla Destino.

  • Nº de Cargas Simultáneas Máximo

    Nº de threads o Nº de tablas que se cargarán simultáneamente. Es posible que determinados tipos de licencia no contemplen esta posibilidad.

    Es el parámetro clave que permite acelerar la carga de datos desde una Base de Datos Origen a la Destino. Se debe modificar con extrema precaución en función del Hardware disponible, del Origen y del Destino.

    Por ejemplo: Si se desean copiar los datos desde una Base de Datos de Producción mientras ésta se encuentra ONLINE, se recomienda poner un valor bajo (3-5) en este parámetro, de forma que no sature dicha Base de Datos. Por el contrario, si se desean copiar los datos desde una Base de Datos de Staging a una de Desarrollo, se puede poner un valor alto para este parámetro (10-20) para reducir el tiempo de copia haciendo un uso muy intensivo de CPU, Red y Discos.

    Si se detectan problemas, este número máximo podrá ser reducido a 1 por Insert Bulk Bestia durante la carga.