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


Конфигурация базы данных Azure SQL в процессе копирования

В этой статье описывается, как использовать операцию копирования в конвейере для копирования данных из и в базу данных SQL Azure.

Поддерживаемая конфигурация

Для настройки каждой вкладки в действии копирования перейдите к следующим разделам соответственно.

General

Ознакомьтесь с руководством по общим параметрам , чтобы настроить вкладку "Общие параметры".

Исходный материал

Следующие свойства поддерживаются для базы данных SQL Azure на вкладке "Источник " действия копирования.

Требуются следующие свойства:

  • Подключение. Выберите подключение к базе данных SQL Azure из списка подключений. Если подключение не существует, создайте новое подключение базы данных SQL Azure, нажав кнопку "Создать".
  • Тип подключения: выберите базу данных SQL Azure.
  • Таблица. Выберите таблицу в базе данных из раскрывающегося списка. Или установите флажок "Изменить", чтобы ввести имя таблицы вручную.
  • Предварительный просмотр данных: выберите предварительный просмотр данных для предварительного просмотра данных в таблице.

В разделе "Дополнительно" можно указать следующие поля:

  • Используйте запрос: вы можете выбрать таблицу, запрос или хранимую процедуру. В следующем списке описана конфигурация каждого параметра:

    • Таблица: чтение данных из таблицы, указанной в таблице , при выборе этой кнопки.

    • Запрос. Укажите настраиваемый SQL-запрос для чтения данных. Примером является select * from MyTable. Или щелкните значок карандаша для редактирования в редакторе кода.

      Снимок экрана: выбор запроса.

    • Хранимая процедура: используйте хранимую процедуру, которая считывает данные из исходной таблицы. Последней инструкцией SQL должна быть инструкция SELECT в хранимой процедуре.

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

      • Параметры хранимой процедуры: укажите значения для параметров хранимой процедуры. Допустимые значения: пары имен или значений. Имена и регистр параметров должны совпадать с именами и регистром параметров хранимой процедуры.

        Снимок экрана: параметры хранимой процедуры.

  • Время ожидания запроса (минуты): укажите время ожидания для выполнения команды запроса, значение по умолчанию — 120 минут. Если для этого свойства задан параметр, допустимые значения имеют интервал времени, например "02:00:00" (120 минут).

    Снимок экрана: параметры времени ожидания запроса.

  • Уровень изоляции: указывает поведение блокировки транзакций для источника SQL. Допустимые значения: None, ReadCommitted, ReadUncommitted, RepeatableRead, Serializable или Snapshot. Если это не указано, используется уровень изоляции None . Дополнительные сведения см. в разделе "Изоляция".

    Снимок экрана: параметры уровня изоляции.

  • Параметр секционирования. Укажите параметры секционирования данных, используемые для загрузки данных из базы данных SQL Azure. Допустимые значения: Нет (по умолчанию), физические секции таблицы и динамический диапазон. Если включен параметр разбиения (то есть не None), степень параллелизма для одновременной загрузки данных из базы данных SQL Azure управляется настройкой параллельного копирования в действии копирования.

    Снимок экрана: параметры параметра секции.

    • Нет. Выберите этот параметр, чтобы не использовать секцию.

    • Физические разделы таблицы: при использовании физического раздела, столбец раздела и механизм автоматически определяются на основе определения физической таблицы.

    • Динамический диапазон: при использовании запроса с включенной параллельной обработкой требуется параметр секционирования?DfDynamicRangePartitionCondition диапазона. Пример запроса: SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition.

      • Имя столбца секционирования: укажите имя исходного столбца в целочисленном или типе даты или даты и времени (int, smallint, bigint, date, smalldatetime, datetime, datetime2, или datetimeoffset), используемый для секционирования диапазоном для параллельной копии. Если значение не указано, автоматически определяется индекс или первичный ключ таблицы, который затем используется в качестве столбца секционирования.
      • Верхняя граница секции: укажите максимальное значение столбца секционирования для разделения диапазона секций. Это значение используется для определения шага раздела, а не для фильтрации строк в таблице. Все строки в таблице или результатах запроса секционируются и копируются.
      • Нижняя граница секции: укажите минимальное значение столбца секционирования для разделения диапазона секций. Это значение используется для определения шага раздела, а не для фильтрации строк в таблице. Все строки в таблице или результатах запроса секционируются и копируются.
  • Дополнительные столбцы: добавьте дополнительные столбцы данных для хранения относительного пути или статического значения исходных файлов. Выражение поддерживается для последнего варианта. Дополнительные сведения см. в разделе Добавление дополнительных столбцов во время копирования.

Место назначения

Следующие свойства поддерживаются для базы данных SQL Azure на вкладке "Назначение " действия копирования.

Снимок экрана: вкладка

Требуются следующие свойства:

  • Подключение. Выберите подключение к базе данных SQL Azure из списка подключений. Если подключение не существует, создайте новое подключение базы данных SQL Azure, нажав кнопку "Создать".
  • Тип подключения: выберите базу данных SQL Azure.
  • Таблица. Выберите таблицу в базе данных из раскрывающегося списка. Или установите флажок "Изменить", чтобы ввести имя таблицы вручную.
  • Предварительный просмотр данных: выберите предварительный просмотр данных для предварительного просмотра данных в таблице.

В разделе "Дополнительно" можно указать следующие поля:

  • Поведение записи: определяет поведение записи, когда источник является файлами из файлового хранилища данных. Вы можете выбрать команду Insert, Upsert или Хранимую процедуру.

    Снимок экрана: вкладка

    • Вставка: Выберите этот параметр, если в исходных данных есть вставки.

    • Upsert: выберите этот параметр, если исходные данные имеют как вставки, так и обновления.

      • Использование TempDB: укажите, следует ли использовать глобальную временную таблицу или физическую таблицу в качестве промежуточной таблицы для upsert. По умолчанию служба использует глобальную временную таблицу в качестве промежуточной таблицы, а этот флажок установлен.

        Снимок экрана: выбор

      • Выберите схему пользовательской базы данных: если флажок "Использовать TempDB " не выбран, укажите промежуточную схему для создания промежуточной таблицы, если используется физическая таблица.

        Замечание

        Необходимо иметь разрешение на создание и удаление таблиц. По умолчанию промежуточная таблица будет делить ту же схему, что и целевая таблица.

        Снимок экрана: не выберите

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

    • Хранимая процедура: используйте хранимую процедуру, которая определяет, как применять исходные данные к целевой таблице. Эта хранимая процедура будет вызываться для каждого пакета.

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

      • Параметры хранимой процедуры: укажите значения для параметров хранимой процедуры. Допустимые значения: пары имен или значений. Имена и регистр параметров должны совпадать с именами и регистром параметров хранимой процедуры.

        Снимок экрана: параметры хранимой процедуры.

  • Блокировка таблицы при массовой вставке: выберите «Да» или «Нет». Используйте этот параметр, чтобы повысить производительность копирования в процессе массовой вставки в таблицу без индекса с нескольких клиентов одновременно. Дополнительные сведения см. в раздел BULK INSERT (Transact-SQL)

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

  • Скрипт предварительного копирования: укажите сценарий для действия копирования перед записью данных в целевую таблицу в каждом запуске. Это свойство можно использовать для очистки предварительно загруженных данных.

  • время ожидания пакетной записи: укажите время ожидания завершения операции пакетной вставки перед истечением тайм-аута. Допустимое значение — интервал времени. Значение по умолчанию — "00:30:00" (30 минут).

  • Размер пакета записи: укажите количество строк для вставки в таблицу SQL в одном пакете. Допустимое значение — целое число (число строк). По умолчанию эта служба динамически определяет соответствующий размер пакета в зависимости от размера строки.

  • Максимальное число одновременных подключений: укажите верхний предел одновременных подключений, установленных в хранилище данных во время выполнения действия. Указывайте значение только при необходимости ограничить количество одновременных подключений.

  • Отключить аналитику метрик производительности: этот параметр используется для сбора метрик, таких как DTU, DWU, RU и т. д., для оптимизации производительности копирования и рекомендаций. Если вы обеспокоены этим поведением, установите этот флажок.

Картирование

Если вы не применяете базу данных SQL Azure с автоматическим созданием таблицы в качестве назначения, перейдите в раздел "Сопоставление".

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

Например, тип столбца идентификатора в источнике является int, и его можно изменить на float type при сопоставлении с целевым столбцом.

Снимок экрана типа отображаемого целевого столбца.

Settings

Для настройки вкладки перейдите к Настройка других параметров на вкладке "Параметры".

Параллельная копия из базы данных SQL Azure

Соединитель Базы данных SQL Microsoft Azure в действии Copy обеспечивает встроенное секционирование данных для параллельного копирования данных. Параметры секционирования данных можно найти на вкладке Источник действия Copy.

Если включено копирование с секционированием, действие Copy выполняет параллельные запросы к источнику Базы данных SQL Microsoft Azure для загрузки данных по секциям. Параллельная степень управляется степенью параллелизма копирования на вкладке параметров действия копирования. Например, если задать степень параллелизма копирования четыре, служба одновременно создает и выполняет четыре запроса на основе указанного параметра секции и параметров, а каждый запрос извлекает часть данных из базы данных SQL Azure.

Рекомендуется включить параллельное копирование с секционированием данных, особенно при загрузке большого объема данных из Базы данных SQL Microsoft Azure. Ниже приведены рекомендуемые конфигурации для разных сценариев. Если данные копируются в файловое хранилище данных, то рекомендуется сохранять данные в папку несколькими файлами (указывая только имя папки), так как производительность в таком случае будет выше, чем при записи в один файл.

Scenario Предлагаемые параметры
Полная загрузка из большой таблицы с физическими разделами. Параметр секционирования. Физические секции таблицы.

Во время выполнения служба автоматически определяет физические секции и копирует данные по секциям.

Чтобы проверить, имеет ли таблица физическую секцию, выполните следующий запрос.
Полная загрузка из большой таблицы без физических секций, когда таблица содержит столбец целочисленного типа или типа даты и времени для секционирования данных. Варианты разделов: раздел динамического диапазона.
Столбец секционирования (необязательно). Укажите столбец для секционирования данных. Если значение не указано, то используется столбец с индексом или первичным ключом.
Верхняя граница секционирования и Нижняя граница секционирования (необязательно). Указывайте, если необходимо определить шаг секционирования. Эти значения не предназначены для фильтрации строк в таблице. Все строки в таблице будут секционированы и скопированы. Если это не указано, действия копирования автоматически обнаруживают значения.

К примеру, если ваш столбец раздела "Идентификатор" имеет диапазон значений от 1 до 100 и вы установили нижнюю границу как 20, а верхнюю границу как 80 с параллельным копированием как 4, служба извлекает данные по 4 разделам — идентификаторы в диапазоне <=20, [21, 50], [51, 80] и >=81 соответственно.
Загрузка большого объема данных пользовательским запросом без использования физических секций, однако с использованием столбца целочисленного типа или типа даты/даты и времени для секционирования данных. Варианты разделов: раздел динамического диапазона.
Запрос: SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>.
Столбец секционирования: укажите столбец, используемый для секционирования данных.
Верхняя граница секционирования и Нижняя граница секционирования (необязательно). Указывайте, если необходимо определить шаг секционирования. Эти значения не предназначены для фильтрации строк в таблице. Все строки в результатах запроса будут секционированы и скопированы. Если значение не указано, действие копирования автоматически определяет значение.

К примеру, если ваш столбец раздела "Идентификатор" имеет диапазон значений от 1 до 100, и вы установили нижнюю границу как 20, а верхнюю границу как 80, с параллельным копированием как 4, служба извлекает данные по 4 разделам — идентификаторы в диапазоне <=20, [21, 50], [51, 80] и >=81 соответственно.

Ниже приведены дополнительные примеры запросов для различных сценариев.
• Запросите всю таблицу:
SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition
• Запрос из таблицы с выбором столбцов и дополнительными фильтрами по условию WHERE:
SELECT <column_list> FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>
• Запрос с вложенными запросами:
SELECT <column_list> FROM (<your_sub_query>) AS T WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>
• Запрос с разделом во вложенном запросе:
SELECT <column_list> FROM (SELECT <your_sub_query_column_list> FROM <TableName> WHERE ?DfDynamicRangePartitionCondition) AS T

Ниже приведены рекомендации по загрузке данных с параметром секционирования.

  • Чтобы избежать неравномерного распределения данных, выбирайте в качестве столбца секционирования отличительный столбец (например, первичный ключ или уникальный ключ).
  • Если в таблице есть встроенные секции, используйте параметр " Физические секции таблицы " для повышения производительности.

Пример запроса для проверки физической секции

SELECT DISTINCT s.name AS SchemaName, t.name AS TableName, pf.name AS PartitionFunctionName, c.name AS ColumnName, iif(pf.name is null, 'no', 'yes') AS HasPartition
FROM sys.tables AS t
LEFT JOIN sys.objects AS o ON t.object_id = o.object_id
LEFT JOIN sys.schemas AS s ON o.schema_id = s.schema_id
LEFT JOIN sys.indexes AS i ON t.object_id = i.object_id 
LEFT JOIN sys.index_columns AS ic ON ic.partition_ordinal > 0 AND ic.index_id = i.index_id AND ic.object_id = t.object_id 
LEFT JOIN sys.columns AS c ON c.object_id = ic.object_id AND c.column_id = ic.column_id 
LEFT JOIN sys.partition_schemes ps ON i.data_space_id = ps.data_space_id 
LEFT JOIN sys.partition_functions pf ON pf.function_id = ps.function_id 
WHERE s.name='[your schema]' AND t.name = '[your table name]'

Если таблица содержит физическую секцию, параметр HasPartition имеет значение yes, как показано ниже.

Результат sql-запроса.

Сводка таблицы

В следующих таблицах содержатся дополнительные сведения о действии копирования в базе данных SQL Azure.

Исходный материал

Имя Description Ценность Обязательно Свойство скрипта JSON
Подключение Ваше подключение к исходному хранилищу данных. <подключение> Да connection
Тип подключения Тип подключения. Выберите базу данных SQL Azure. База данных SQL Azure Да /
таблица Таблица исходных данных. <имя целевой таблицы> Да схема
table
Использование запроса Настраиваемый SQL-запрос для чтения данных. •Никакой
•Запрос
• Хранимая процедура
нет

• sqlReaderQuery
• sqlReaderНазваниеХранимойПроцедуры, ПараметрыХранимойПроцедуры
Время ожидания запроса Время ожидания выполнения команды запроса по умолчанию — 120 минут. временной промежуток нет время ожидания запроса
Уровень изоляции Указывает поведение блокировки транзакций для источника SQL. • Нет
• Read Committed (чтение с фиксацией)
• ReadUncommitted (Чтение незафиксированных данных)
• RepeatableRead (Повторяемое чтение)
•Сериализуемый
•Снимок
нет isolationLevel
Параметр секции Параметры секционирования данных, используемые для загрузки данных из базы данных SQL Azure. • Нет
• Физические партиции таблицы
•Динамический диапазон
нет partitionOption:
• ФизическиеРазделыТаблицы
• DynamicRange
Дополнительные столбцы Добавьте дополнительные столбцы данных для хранения относительного пути или статического значения исходных файлов. Выражение поддерживается для последнего варианта. •Имя
•Ценность
нет дополнительныеКолонки
•имя
•ценность

Место назначения

Имя Description Ценность Обязательно Свойство скрипта JSON
Подключение Подключение к целевому хранилищу данных. <ваше подключение > Да connection
Тип подключения Тип подключения. Выберите базу данных SQL Azure. База данных SQL Azure Да /
таблица Целевая таблица данных. <имя целевой таблицы> Да схема
table
Поведение при записи Определяет поведение записи, когда источник является файлами из файлового хранилища данных. •Вставка
• обновление или добавление записи
• Хранимая процедура
нет writeBehavior:
• вставить
• добавление или обновление записи
• sqlWriterStoredProcedureName, sqlWriterTableType, storedProcedureParameters
Блокировка на уровне таблицы при массовой вставке Используйте этот параметр, чтобы повысить производительность копирования в процессе массовой вставки в таблицу без индекса с нескольких клиентов одновременно. Да или нет нет sqlWriterUseTableLock:
истина или ложь
Параметр таблицы Указывает, следует ли автоматически создавать целевую таблицу, если она не существует на основе исходной схемы. •Никакой
• Автоматическая создание таблицы
нет tableOption:
• автосоздание
Скрипт предварительного копирования Скрипт для выполнения действия копирования перед записью данных в целевую таблицу при каждом запуске. Это свойство можно использовать для очистки предварительно загруженных данных. <скрипт предварительного копирования>
(строка)
нет preCopyScript
время ожидания выполнения пакета Время ожидания до выполнения операции пакетной вставки, пока не истечет срок ее действия. Разрешенным значением является временной диапазон. Значение по умолчанию — "00:30:00" (30 минут). временной промежуток нет writeBatchTimeout
размер пакета записи Количество строк для вставки в таблицу SQL на пакет. По умолчанию эта служба динамически определяет соответствующий размер пакета в зависимости от размера строки. <количество строк>
(целое число)
нет writeBatchSize (размер батча записи)
Максимальное число одновременных подключений Верхний предел одновременных подключений, установленных к хранилищу данных во время выполнения активности. Указывайте значение только при необходимости ограничить количество одновременных подключений. <верхний предел одновременных подключений>
(целое число)
нет maxConcurrentConnections
Отключение аналитики метрик производительности Этот параметр используется для сбора метрик, таких как DTU, DWU, RU и т. д., для оптимизации производительности копирования и рекомендаций. Если вы обеспокоены этим поведением, установите этот флажок. Выбор или отмена выбора нет disableMetricsCollection:
истина или ложь