Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция массового копирования SQL Server поддерживает передачу больших объемов данных в таблицу ИЛИ представление SQL Server или из нее. Данные также можно передать, указав инструкцию SELECT. Данные можно перемещать между SQL Server и файлом данных операционной системы, например asCII-файл. Файл данных может иметь различные форматы; Формат определяется для массового копирования в файле форматирования. При необходимости данные можно загружать в программные переменные и передаваться в SQL Server с помощью функций и методов массового копирования.
Пример приложения, демонстрирующего эту функцию, см. в разделе "Массовое копирование данных" с помощью IRowsetFastLoad (OLE DB).
Приложение обычно использует массовую копию одним из следующих способов:
Массовая копия из таблицы, представления или результирующий набор инструкции Transact-SQL в файл данных, в котором данные хранятся в том же формате, что и таблица или представление.
Это называется файлом данных в собственном режиме.
Массовая копия из таблицы, представления или результирующий набор инструкции Transact-SQL в файл данных, в котором данные хранятся в формате, отличном от одной из таблиц или представлений.
В этом случае создается отдельный файл форматирования, который определяет характеристики (тип данных, позиция, длина, терминатор и т. д.) каждого столбца, как он хранится в файле данных. Если все столбцы преобразуются в формат символов, результирующий файл называется файлом данных в режиме символов.
Массовая копия из файла данных в таблицу или представление.
При необходимости файл форматирования используется для определения макета файла данных.
Загрузите данные в программные переменные, а затем импортируйте данные в таблицу или представление с помощью функций массового копирования для массового копирования в строке одновременно.
Файлы данных, используемые функциями массового копирования, не должны создаваться другой программой массового копирования. Любая другая система может создать файл данных и форматировать файл в соответствии с определениями массового копирования; Эти файлы можно использовать с программой массового копирования SQL Server для импорта данных в SQL Server. Например, можно экспортировать данные из электронной таблицы в файле с разделителями табуляции, создать файл формата, описывающий файл с разделителями табуляции, а затем использовать программу массового копирования для быстрого импорта данных в SQL Server. Файлы данных, созданные массовой копией, также можно импортировать в другие приложения. Например, можно использовать функции массового копирования для экспорта данных из таблицы или представления в файл с разделителями табуляции, который затем может быть загружен в электронную таблицу.
Программисты, кодирующие приложения для использования функций массового копирования, должны соответствовать общим правилам для хорошей производительности массового копирования. Дополнительные сведения о поддержке операций массового копирования в SQL Server см. в статье о массовом импорте и экспорте данных (SQL Server).
Ограничения и условия
Определяемый пользователем тип CLR (UDT) должен быть привязан к двоичным данным. Даже если файл форматирования указывает SQLCHAR в качестве типа данных для целевого столбца UDT, программа BCP будет рассматривать данные как двоичные.
Не используйте SET FMTONLY OFF с операциями массового копирования. SET FMTONLY OFF может привести к сбою операции массового копирования или непредвиденным результатам.
Поставщик OLE DB для собственного клиента SQL Server
Поставщик OLE DB собственного клиента SQL Server реализует два метода для выполнения операций массового копирования с базой данных SQL Server. Первый метод включает использование интерфейса IRowsetFastLoad для операций массового копирования на основе памяти; а второй — использование интерфейса IBCPSession для операций массового копирования на основе файлов.
Использование операций массового копирования на основе памяти
Поставщик OLE DB собственного клиента SQL Server реализует интерфейс IRowsetFastLoad для предоставления поддержки операций массового копирования на основе памяти SQL Server. Интерфейс IRowsetFastLoad реализует методы IRowsetFastLoad::Commit и IRowsetFastLoad::InsertRow .
Включение сеанса для IRowsetFastLoad
Потребитель уведомляет поставщика OLE DB собственного клиента SQL Server о необходимости массового копирования, задав свойству источника данных для собственного поставщика данных SQL Server Native Client OLE DB SSPROP_ENABLEFASTLOAD значение VARIANT_TRUE. При использовании свойства, заданного в источнике данных, потребитель создает сеанс поставщика OLE DB собственного клиента SQL Server. Новый сеанс позволяет потребителю получить доступ к интерфейсу IRowsetFastLoad .
Замечание
Если интерфейс IDataInitialize используется для инициализации источника данных, необходимо задать свойство SSPROP_IRowsetFastLoad в параметре rgPropertySets метода IOpenRowset::OpenRowset ; в противном случае вызов метода OpenRowset вернет E_NOINTERFACE.
Включение сеанса массового копирования ограничивает поддержку поставщика OLE DB собственного клиента SQL Server для интерфейсов в сеансе. Сеанс с поддержкой массового копирования предоставляет только следующие интерфейсы:
IDBSchemaRowset
IGetDataSource
IOpenRowset
ISupportErrorInfo
ITransactionJoin
Чтобы отключить создание наборов строк с поддержкой массового копирования и вызвать сеанс поставщика OLE DB собственного клиента SQL Server для возврата к стандартной обработке, сбросьте SSPROP_ENABLEFASTLOAD до VARIANT_FALSE.
Наборы строк IRowsetFastLoad
Наборы строк массового копирования поставщиков OLE DB для собственного клиента SQL Server доступны только для записи, но предоставляют интерфейсы, позволяющие потребителю определить структуру таблицы SQL Server. Следующие интерфейсы предоставляются в наборе строк поставщика OLE DB поставщика OLE DB с поддержкой массового копирования SQL Server.
IAccessor
IColumnsInfo
IColumnsRowset
IConvertType
IRowsetFastLoad
IRowsetInfo
ISupportErrorInfo
Свойства, относящиеся к поставщику, SSPROP_FASTLOADOPTIONS, SSPROP_FASTLOADKEEPNULLS и SSPROP_FASTLOADKEEPIDENTITY, управляют поведением набора строк поставщика OLE DB собственного клиента SQL Server. Свойства указываются в элементе rgProperties члена параметра rgPropertySetsIOpenRowset.
| Идентификатор объекта недвижимости | Описание |
|---|---|
| SSPROP_FASTLOADKEEPIDENTITY | Столбец: Нет R/W: чтение и запись Тип: VT_BOOL По умолчанию: VARIANT_FALSE Описание. Поддерживает значения удостоверений, предоставленные потребителем. VARIANT_FALSE. Значения столбца удостоверений в таблице SQL Server создаются SQL Server. Любое значение, привязанное к столбцу, игнорируется поставщиком OLE DB собственного клиента SQL Server. VARIANT_TRUE. Потребитель привязывает метод доступа, предоставляющий значение столбца удостоверений SQL Server. Свойство удостоверения недоступно для столбцов, принимаюющих ЗНАЧЕНИЕ NULL, поэтому потребитель предоставляет уникальное значение для каждого вызова IRowsetFastLoad::Insert . |
| SSPROP_FASTLOADKEEPNULLS | Столбец: Нет R/W: чтение и запись Тип: VT_BOOL По умолчанию: VARIANT_FALSE Описание. Поддерживает ЗНАЧЕНИЕ NULL для столбцов с ограничением DEFAULT. Влияет только на столбцы SQL Server, которые принимают ЗНАЧЕНИЕ NULL и применяют ограничение DEFAULT. VARIANT_FALSE. SQL Server вставляет значение по умолчанию для столбца, когда потребитель поставщика OLE DB собственного клиента SQL Server вставляет строку, содержащую ЗНАЧЕНИЕ NULL для столбца. VARIANT_TRUE: SQL Server вставляет значение NULL для значения столбца, когда потребитель поставщика OLE DB sql Server Native Client вставляет строку, содержащую ЗНАЧЕНИЕ NULL для столбца. |
| SSPROP_FASTLOADOPTIONS | Столбец: Нет R/W: чтение и запись Тип: VT_BSTR Значение по умолчанию: нет Описание: это свойство совпадает со значением -h "hint[,... n]" параметр служебной программы bcp . Следующие строки можно использовать в качестве параметров в массовом копировании данных в таблицу. ORDER(column[ASC | DESC][,... n]): сортировка данных в файле данных. Производительность массового копирования улучшается, если загруженный файл данных сортируется в соответствии с кластеризованным индексом таблицы. = ROWS_PER_BATCHbb: количество строк данных на пакет (как bb). Сервер оптимизирует массовую загрузку в соответствии со значением bb. По умолчанию ROWS_PER_BATCH неизвестно. = KILOBYTES_PER_BATCHcc: количество килобайтов (КБ) данных на пакет (как cc). По умолчанию KILOBYTES_PER_BATCH неизвестно. TABLOCK: блокировка на уровне таблицы приобретается в течение длительности операции массового копирования. Этот параметр значительно повышает производительность, так как удержание блокировки только в течение операции массового копирования уменьшает конфликт блокировки в таблице. Таблица может загружаться несколькими клиентами одновременно, если таблица не имеет индексов и ТАБЛОК не указана. По умолчанию поведение блокировки определяется блокировкой таблицы параметров таблицы при массовой загрузке. CHECK_CONSTRAINTS. Все ограничения на table_name проверяются во время операции массового копирования. По умолчанию ограничения игнорируются. FIRE_TRIGGER: SQL Server использует управление версиями строк для триггеров и сохраняет версии строк в хранилище версий в tempdb. Поэтому оптимизация массового ведения журнала доступна даже при включении триггеров. Перед массовым импортом пакета с большим количеством строк с включенными триггерами может потребоваться развернуть размер tempdb. |
Использование операций массового копирования на основе файлов
Поставщик OLE DB собственного клиента SQL Server реализует интерфейс IBCPSession для предоставления поддержки операций массового копирования на основе файлов SQL Server. Интерфейс IBCPSession реализует IBCPSession::BCPColFmt, Методы IBCPSession::BCPColumns, IBCPSession::BCPSession::BCPSession::BCPSession::BCPExec, IBCPSession::BCPInit, IBCPSession::BCPReadFmt и IBCPSession::BCPWriteFmt.
Драйвер ODBC для собственного клиента SQL Server
Драйвер ODBC собственного клиента SQL Server поддерживает ту же поддержку операций массового копирования, которые были частью предыдущих версий драйвера ODBC SQL Server. Сведения об операциях массового копирования с помощью драйвера ODBC собственного клиента SQL Server см. в разделе "Выполнение операций массового копирования( ODBC)".
См. также
Компоненты собственного клиента SQL Server
Свойства источника данных (OLE DB)
Массовый импорт и экспорт данных (SQL Server)
IRowsetFastLoad (OLE DB)
IBCPSession (OLE DB)
Оптимизация производительности массового импорта