Экспорт (0) Печать
Развернуть все
Развернуть Свернуть

Инструкции Использование bcp для миграции базы данных в базу данных SQL Azure

Обновлено: Октябрь 2014 г.

При миграции базы данных SQL Server в базу База данных SQL Microsoft Azure можно использовать служебную программу SQL Server bcp для высокопроизводительного перемещения базы данных. Сначала используйте программу bcp для копирования данных из исходной таблицы в файл данных. Затем запустите программу снова, чтобы скопировать файл данных в целевую таблицу. Программа bcp перемещает только данные, поэтому для переноса схемы базы данных следует использовать другой процесс.

Bcp — это служебная программа командной строки, которая предназначена для выполнения высокопроизводительной массовой передачи данных на SQL Server или в База данных SQL Microsoft Azure. Это не средство миграции данных. Она не извлекает и не создает схему. Сначала следует перенести схему в базу данных в База данных SQL Microsoft Azure с помощью одного из инструментов миграции схемы, например мастера создания скриптов, или выполнить извлечение и развертывание пакета приложения уровня данных (DAC). Дополнительные сведения о процессе миграции схемы см. в разделе Azure SQL Database Migration Processes.

Программа Bcp использует функцию массового копирования SQL Server, которая также предоставлена в API-интерфейсе SQL Server. Несколько средств миграции, таких как мастер миграции База данных SQL Microsoft Azure и пакеты DAC BACPAC, также используют функции массового копирования для передачи данных.

Используйте рекомендации по массовому копированию для повышения производительности копирования данных в большую целевую таблицу. Например:

  • Параметр –N используется для передачи данных в собственном режиме, поэтому преобразование типов данных не нужно.

  • Используйте параметр –b для указания размера пакета. Каждый пакет импортируется и регистрируется как отдельная транзакция. По умолчанию импорт всех строк в файле данных выполняется в одном пакете. Если транзакция завершится неудачно, то будет выполнен откат только операций вставки в текущем пакете. Определение наилучшего размера пакета и использование размера пакета — хороший способ уменьшить вероятность потери соединения с База данных SQL Microsoft Azure во время переноса данных.

  • Используйте указания для bcp.

    • Используйте подсказку –h «TABLOCK» при импорте для указания использования блокировки уровня массового обновления таблицы на время выполнения операции массовой загрузки. Это уменьшает издержки блокировки путем использования одной блокировки таблицы, а не блокировки каждой строки.

    • Указание –h «ORDER(...)» при экспорте для сортировки файла данных. Производительность операции выполнения массового импорта увеличивается, если импортируемые данные упорядочены согласно кластеризованному индексу таблицы.

  • Для больших таблиц можно разбить процесс импортирования копии на несколько потоков, которые могут выполняться параллельно. Если было выполнено массовое копирование данных из исходной таблицы в один файл данных, используйте параметры –F firstrow и –L lastrow, чтобы указать, какая часть файла данных будет обрабатываться при каждом запуске bcp.

Дополнительные сведения о рекомендациях для массового копирования см. в разделе Оптимизации производительности массового импорта.

Если используется IDENTITY для формирования в таблице первичных ключей, применяйте параметр –E программы bcp для сохранения ключей, созданных в базе данных-источнике. Использование параметра -E позволяет предотвратить любые нарушения внешних ключей при импорте при условии, что при импорте в таблицах не выполняются никакие другие обновления. Задайте для базы данных режим только для чтения, чтобы обеспечить запрет каких-либо обновлений.

noteПримечание
В определенный момент времени bcp работает только с одной таблицей, поэтому целостность транзакций для нескольких таблиц при извлечении данных из базы данных-источника не поддерживается. Эту проблему можно устранить, задав во время экспорта для базы данных-источника режим одного пользователя или режим только для чтения.

[Top]

При массовом копировании таблицы в целевой базе данных должны быть пустыми. Нельзя выполнить несколько массовых операций копирования в одну таблицу, если не выполнено усечение или удаление всех строк, вставленных в предыдущей операции массового копирования.

[Top]

bcp поставляется вместе с SQL Server. Установите клиентские служебные программы из SQL Server 2008 R2 или более поздних версий SQL Server для получения версии bcp, поддерживаемой для использования с База данных SQL Microsoft Azure.

[Top]

Процесс перемещения данных из таблицы в базе данных-источнике в копию таблицы в целевой базе данных с помощью bcp состоит из пяти этапов.

  1. Перенос схемы.

    Используйте механизм переноса схемы, например мастер создания скриптов или пакет DAC BACPAC, для создания копии базы данных в База данных SQL Microsoft Azure. После завершения этого этапа в базе данных База данных SQL Azure будут созданы все таблицы. При этом таблицы не будут содержать каких-либо данных.

  2. Экспортирование данных в файлы данных.

    Для каждой таблицы в базе данных-источнике SQL Server запустите операцию bcp out для копирования данных из таблицы в файл данных. Это пример экспорта данных из одной таблицы в файл данных.

    bcp tableName out C:\filePath\exportFileName.dat –S serverName –T –n -q
    
    Параметр out задает копирование данных из SQL Server. Параметр -n выполняет операцию массового копирования с использованием собственных типов данных базы данных. Параметр -q выполняет инструкцию SET QUOTED_IDENTIFIERS ON в соединении между программой bcp и экземпляром компонента Database Engine.

  3. Оптимизация массового копирования

    Внесите необходимые изменения в схему целевой базы данных, чтобы повысить производительность копирования данных в большие таблицы. Для этого можно отключить некластеризованные индексы, триггеры и ограничения.

  4. Импортирование файла данных База данных SQL Azure

    Запустите программу bcp для каждой таблицы в целевой базе данных База данных SQL Microsoft Azure для копирования данных из файла экспортируемых данных в таблицу. В этом примере bcp запускается трижды для копирования данных в одну таблицу из файла данных, который имеет приблизительно 300 000 строк. Каждый запуск копирует около 100 000 строк.

    Bcp tableName in c:\filePath\exportFileName.dat –n –U userName@serverName –S tcp:serverName.database.windows.net –P password –b 200 –L 99999 –h”TABLOCK”
    
    Bcp tableName in c:\filePath\exportFileName.dat –n –U userName@serverName –S tcp:serverName.database.windows.net –P password –b 200 –F 100000 –L 199999 –h”TABLOCK”
    
    Bcp tableName in c:\filePath\exportFileName.dat –n –U userName@serverName –S tcp:serverName.database.windows.net –P password –b 200 –F 200000 –h”TABLOCK”
    
    Параметр in обозначает копирование данных в База данных SQL Microsoft Azure. Параметр -b указывает количество строк в каждом пакете импортированных данных. Параметры –L lastrow и –F firstrow используются для определения, какая часть файла данных обрабатывается при каждом запуске.

  5. Устранение оптимизации схемы

    Восстановите все элементы схемы, которые были убраны для оптимизации операций массовой вставки. Например, включите некластеризованные индексы, триггеры или ограничения, которые были отключены на этапе 3.

[Top]

Корпорация Майкрософт проводит интернет-опрос, чтобы выяснить ваше мнение о веб-сайте MSDN. Если вы желаете принять участие в этом интернет-опросе, он будет отображен при закрытии веб-сайта MSDN.

Вы хотите принять участие?
Показ:
© 2015 Microsoft