Поделиться через


Как выполнить массовое копирование данных с использованием интерфейса IRowsetFastLoad (OLE DB)

Потребитель уведомляет SQLOLEDB о необходимости массового копирования путем установки зависящего от поставщика SQLOLEDB свойства SSPROP_ENABLEFASTLOAD в значение VARIANT_TRUE. Установив на источнике данных это свойство, потребитель создает сеанс SQLOLEDB. Новый сеанс позволяет потребителю получить доступ к интерфейсу IRowsetFastLoad.

Имеется полный образец, иллюстрирующий применение интерфейса IRowsetFastLoad для массового копирования записей в таблицу. В этом образце в таблицу IRFLTable добавляется 10 записей. Необходимо создать в базе данных таблицу IRFLTable.

Полный образец кода находится в файле BulkCopyRecords.cpp. Архив, содержащий этот образец, можно загрузить на странице загрузок SQL Server MSDN.

Этот образец создан с помощью Microsoft Visual C++ 2005.

Примечание по безопасностиПримечание по безопасности

При возможности используйте проверку подлинности Windows. Если проверка подлинности Windows недоступна, запросите у пользователя ввод учетных данных во время выполнения. Избегайте хранения учетных данных в файле. Если необходимо сохранить учетные данные, зашифруйте их с помощью API-интерфейса шифрования Win32.

Массовое копирование данных в таблицу SQL Server

  1. Установите соединение с источником данных.

  2. Установите зависящее от поставщика SQLOLEDB свойство источника данных SSPROP_ENABLEFASTLOAD в значение VARIANT_TRUE. При установке данного свойства в значение VARIANT_TRUE вновь созданный сеанс позволит потребителю получить доступ к IRowsetFastLoad.

  3. Создайте сеанс, запрашивающий интерфейс IOpenRowset.

  4. Вызовите метод IOpenRowset::OpenRowset для открытия набора строк, включающего все строки таблицы (в которую необходимо скопировать данные с помощью операции массового копирования).

  5. Выполните необходимые привязки и создайте с помощью метода IAccessor::CreateAccessor метод доступа.

  6. Задайте буфер памяти, из которого данные будут копироваться в таблицу.

  7. Вызовите метод IRowsetFastLoad::InsertRow для массового копирования данных в таблицу.