Tarea Inserción masiva
La tarea Inserción masiva proporciona una forma muy eficaz de copiar grandes cantidades de datos a una tabla o vista de SQL Server. Por ejemplo, suponga que su compañía almacena una lista de productos de un millón de filas en un gran sistema (mainframe), pero el sistema de comercio electrónico de la compañía utiliza SQL Server para rellenar páginas web. Debe actualizar la tabla de productos de SQL Server todas las noches con la lista maestra de productos del gran sistema. Para ello, debe guardar la lista de productos con un formato delimitado por tabuladores y utilizar la tarea Inserción masiva para copiar los datos directamente a la tabla de SQL Server.
Para garantizar que la copia de datos se realice a gran velocidad, no se permite la aplicación de transformaciones a los datos mientras se mueven desde el archivo de origen a la tabla o la vista.
Puede configurar la tarea Inserción masiva de las maneras siguientes:
Especificar el administrador de conexiones OLE DB para conectar con la base de datos de SQL Server de destino y la tabla o la vista en la que se insertarán los datos. La tarea Inserción masiva solo admite conexiones de OLE DB para la base de datos de destino.
Especifique el archivo o administrador de conexiones de archivos planos para tener acceso al archivo de origen. La tarea Inserción masiva solo utiliza el administrador de conexiones para la ubicación del archivo de destino. La tarea omite otras opciones seleccionadas en el editor de administrador de conexiones.
Definir el formato usado por la tarea Inserción masiva mediante un archivo de formato o definiendo la columna y los delimitadores de filas de los datos de origen. Si utiliza un archivo de formato, especifique el administrador de conexiones de archivos para tener acceso al archivo de formato.
Especificar acciones que se deben realizar en la tabla o la vista de destino cuando la tarea inserta los datos. Entre las opciones figuran restricciones CHECK, habilitar inserciones de identidad, conservar valores NULL, activar desencadenadores y bloquear la tabla.
Proporcionar información acerca del lote de datos que se va a insertar, como el tamaño del lote, la primera y la última fila del archivo que se va a insertar, el número de errores de inserción que se pueden producir antes de que la tarea deje de insertar filas y los nombres de las columnas que se van a ordenar.
Si la tarea Inserción masiva utiliza un administrador de conexiones de archivos planos para obtener acceso al archivo de origen, la tarea no utiliza el formato especificado en dicho administrador. En lugar de este formato, la tarea Inserción masiva utiliza el formato especificado en un archivo de formato o los valores de las propiedades RowDelimiter y ColumnDelimiter de la tarea.
Consideraciones de uso
Antes de utilizar la tarea Inserción masiva, tenga en cuenta que:
La tarea Inserción masiva solo puede transferir datos de un archivo de texto a una tabla o una vista de SQL Server. Para utilizar la tarea Inserción masiva para transferir datos de otros sistemas de administración de bases de datos (DBMS), debe exportar los datos del origen a un archivo de texto y después importar los datos del archivo de texto en una tabla o vista de SQL Server.
El destino debe ser una tabla o una vista de una base de datos de SQL Server. Si la tabla o vista de destino ya contiene datos, los datos nuevos se anexarán a los datos existentes cuando se ejecute la tarea Inserción masiva. Si desea reemplazar los datos, antes de ejecutar la tarea Inserción masiva, debe ejecutar una tarea Ejecutar SQL que ejecute una instrucción DELETE o TRUNCATE. Para obtener más información, vea Tarea Ejecutar SQL de SSIS.
Puede utilizar un archivo de formato en el objeto de tarea Inserción masiva. Si tiene un archivo de formato creado con la utilidad bcp, puede especificar su ruta de acceso en la tarea Inserción masiva. La tarea Inserción masiva admite tanto archivos XML como archivos con otros formatos. Para obtener más información acerca de los archivos de formato, vea Archivos de formato para importar o exportar datos.
Solo los miembros del rol fijo de servidor sysadmin pueden ejecutar un paquete que contiene una tarea Inserción masiva.
Usar la tarea Inserción masiva en las transacciones
Si el tamaño de un lote no está establecido, la operación completa de copia masiva se trata como una transacción. Si el tamaño del lote es 0, significa que los datos se insertan en un lote. Si se ha establecido un tamaño de lote, cada lote constituye una transacción que será confirmada cuando finalice la ejecución del lote. Para obtener más información, vea Transacciones implícitas.
El comportamiento de la tarea Inserción masiva en lo que se refiere a las transacciones dependerá de si la tarea se combina con la transacción del paquete. Si la tarea Inserción masiva no se combina con la transacción de paquete, se confirmará cada lote sin errores como una unidad antes de procesar el siguiente lote. Si se combina la tarea de inserción masiva con la transacción del paquete, los lotes sin errores permanecerán en la transacción tras la finalización de la tarea. Estos lotes están sujetos a las operaciones para confirmar o revertir del paquete.
Un error en la tarea Inserción masiva no revierte automáticamente los lotes cargados correctamente; de forma similar, si la tarea se completa correctamente, los lotes no se confirman automáticamente. Solo se realizan operaciones para confirmar o revertir en respuesta a valores de propiedades de un paquete y un flujo de trabajo.
Especificar el origen y el destino
Si se especifica la ubicación del archivo de origen de texto, tenga en cuenta los siguientes aspectos:
El servidor debe tener permiso de acceso al archivo y a la base de datos de destino.
El servidor ejecuta la tarea Inserción masiva. Por tanto, cualquier archivo de formato utilizado por la tarea debe encontrarse en el servidor.
El archivo de código fuente que carga la tarea Inserción masiva puede estar en el mismo servidor que la base de datos de SQL Server en la que se van a insertar los datos o en un servidor remoto. Si el archivo está en un servidor remoto, debe especificar el nombre de archivo en la ruta mediante un nombre conforme con la convención de nomenclatura universal (UNC).
Optimizar el rendimiento
Para optimizar el rendimiento, tenga en cuenta que:
Si el archivo de texto se encuentra en el mismo equipo que la base de datos de SQL Server en la que se van a insertar los datos, la operación de copia se producirá aun más rápido, ya que no hay que mover los datos por la red.
La tarea de inserción masiva no registrará las filas que produzcan errores. Si tiene que capturar esta información, use las salidas de error de componentes de flujo de datos para capturar las filas que provocan errores en un archivo de excepciones.
Entradas del registro personalizadas disponibles en la tarea Inserción masiva
La siguiente tabla contiene las entradas del registro personalizadas para la tarea Inserción masiva. Para obtener más información, vea Implementar inicios de sesión en paquetes y Mensajes personalizados para registro.
Entrada del registro |
Descripción |
---|---|
BulkInsertTaskBegin |
Indica que se inició la inserción masiva. |
BulkInsertTaskEnd |
Indica que finalizó la inserción masiva. |
BulkInsertTaskInfos |
Proporciona información descriptiva sobre la tarea. |
Configurar la tarea Inserción masiva
Puede establecer propiedades a través del Diseñador SSIS o mediante programación.
Para obtener más información acerca de las propiedades que puede establecer en el Diseñador SSIS, haga clic en uno de los temas siguientes:
Para obtener más información sobre cómo establecer estas propiedades en el Diseñador SSIS, haga clic en el tema siguiente:
Configurar la tarea Inserción masiva mediante programación
Para obtener más información sobre cómo establecer estas propiedades mediante programación, haga clic en el tema siguiente:
Recursos externos
Artículo técnico, Quizá obtenga el error "No se puede preparar la inserción masiva de SSIS para la inserción de datos." en sistemas habilitados para UAC, en support.microsoft.com.
Artículo técnico, The Data Loading Performance Guide, en msdn.microsoft.com.
Artículo técnico, Usar SQL Server Integration Services para la carga masiva de datos, en simple-talk.com.
|