Compartir a través de


Cómo copiar datos de forma masiva mediante IRowsetFastLoad (OLE DB)

El consumidor notifica a SQLOLEDB su necesidad de realizar una copia masiva estableciendo la propiedad SSPROP_ENABLEFASTLOAD específica del proveedor SQLOLEDB en VARIANT_TRUE. Con la propiedad establecida en el origen de datos, el consumidor crea una sesión SQLOLEDB. La nueva sesión permite el acceso del consumidor a IRowsetFastLoad.

Tiene a su disposición un ejemplo completo donde se muestra el uso de IRowsetFastLoad para la copia masiva de los registros en una tabla. En este ejemplo, se agregan 10 registros a la tabla IRFLTable. Es necesario crear la tabla IRFLTable en la base de datos.

El ejemplo de código completo se encuentra en el archivo BulkCopyRecords.cpp. Puede descargar un archivo que contiene el ejemplo en la página de descargas de SQL Server en MSDN.

Este ejemplo se desarrolló con Microsoft Visual C++ 2005.

Nota de seguridadNota de seguridad

Siempre que sea posible, utilice la autenticación de Windows. Si la autenticación de Windows no está disponible, solicite a los usuarios que escriban sus credenciales en tiempo de ejecución. No guarde las credenciales en un archivo. Si tiene que conservar las credenciales, debería cifrarlas con la API de criptografía de Win32.

Para realizar una copia masiva de datos en una tabla de SQL Server

  1. Establezca una conexión con el origen de datos.

  2. Establezca la propiedad de origen de datos SSPROP_ENABLEFASTLOAD específica del proveedor SQLOLEDB en VARIANT_TRUE. Con esta propiedad establecida en VARIANT_TRUE, la sesión recién creada permite el acceso del consumidor a IRowsetFastLoad.

  3. Cree una sesión que solicite la interfaz IOpenRowset.

  4. Llame a IOpenRowset::OpenRowset para abrir un conjunto de filas que incluya todas las filas de la tabla (donde los datos se copiarán mediante una operación de copia masiva).

  5. Realice los enlaces necesarios y cree un descriptor de acceso mediante IAccessor::CreateAccessor.

  6. Configure el búfer de memoria desde el que los datos se copiarán en la tabla.

  7. Llame a IRowsetFastLoad::InsertRow para realizar la copia masiva de los datos en la tabla.