Копирование данных в базу данных SQL Azure и из нее с помощью фабрики данных Azure

Примечание

В этой статье рассматривается служба "Фабрика данных Azure" версии 1. Если вы используете текущую версию Фабрики данных, см. статью о соединителе Базы данных SQL Azure в службе "Фабрика данных Azure" версии 2.

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

Поддерживаемые сценарии

Данные можно скопировать из базы данных SQL Azure в следующие хранилища данных:

Категория Хранилище данных
Azure Хранилище BLOB-объектов Azure
Azure Data Lake Storage 1-го поколения
Azure Cosmos DB (SQL API)
База данных SQL Azure
Azure Synapse Analytics
Индекс Когнитивного поиска Azure
Хранилище таблиц Azure
Базы данных SQL Server
Oracle
Файл Файловая система

Данные можно скопировать в базу данных SQL Azure из следующих хранилищ данных:

Категория Хранилище данных
Azure Хранилище BLOB-объектов Azure
Azure Cosmos DB (SQL API)
Azure Data Lake Storage 1-го поколения
База данных SQL Azure
Azure Synapse Analytics
Хранилище таблиц Azure
Базы данных Amazon Redshift
DB2
MySQL
Oracle
PostgreSQL
SAP Business Warehouse
SAP HANA
SQL Server
Sybase
Teradata
NoSQL Cassandra
MongoDB
Файл Amazon S3
Файловая система
FTP
HDFS
SFTP
Другие Базовый протокол HTTP
Базовый протокол OData
Базовый протокол ODBC
Salesforce
Веб-таблица (таблица на основе HTML)

Поддерживаемый тип проверки подлинности

Соединитель Базы данных SQL Azure поддерживает обычную проверку подлинности.

Начало работы

Можно создать конвейер с действием копирования, которое перемещает данные из базы данных SQL Azure или в нее с помощью различных инструментов и API-интерфейсов.

Проще всего создать конвейер с помощью мастера копирования. В статье Руководство. Создание конвейера с действием копирования с помощью мастера копирования фабрики данных приведены краткие пошаговые указания по созданию конвейера с помощью мастера копирования данных.

Вы также можете использовать следующие инструменты для создания конвейера: Visual Studio, Azure PowerShell, шаблон Azure Resource Manager, .NET API, а также REST API. Пошаговые инструкции по созданию конвейера с действием копирования см. в руководстве по действию копирования.

Независимо от используемого средства или API-интерфейса, для создания конвейера, который перемещает данные из источника данных в приемник, выполняются следующие шаги:

  1. Создание фабрики данных. Фабрика данных может содержать один или несколько конвейеров.
  2. Создайте связанные службы, чтобы связать входные и выходные данные с фабрикой данных. Например, если вы копируете данные из хранилища BLOB-объектов Azure в базу данных SQL Azure, вы создаете две связанные службы, чтобы связать учетную запись хранения Azure и базу данных SQL Azure с фабрикой данных. Сведения о свойствах связанной службы, относящихся к базе данных SQL Azure, см. в разделе Свойства связанной службы.
  3. Создайте наборы данных, которые представляют входные и выходные данные для операции копирования. В примере, упомянутом на последнем этапе, создайте набор данных, чтобы указать контейнер BLOB-объектов и папку, содержащую входные данные. Вы также создаете другой набор данных, чтобы указать таблицу SQL в базе данных SQL Azure, которая содержит данные, скопированные из хранилища BLOB-объектов. Сведения о свойствах набора данных, относящихся к Azure Data Lake Store, см. в разделе Свойства набора данных.
  4. Создайте конвейер с действием копирования, который принимает входной набор данных и возвращает выходной набор данных. В примере выше BlobSource используется как источник, а SqlSink — как приемник для действия копирования. Аналогично, при копировании из Базы данных SQL Azure в хранилище BLOB-объектов Azure в действии копирования используются SqlSource и BlobSink. Сведения о свойствах действия копирования, относящихся к базе данных SQL Azure, см. в разделе Свойства действия копирования. Для получения сведений о том, как использовать хранилище данных в качестве источника или приемника, щелкните ссылку в предыдущем разделе об источнике данных.

Если вы используете мастер, то он автоматически создает определения JSON для сущностей фабрики данных (связанных служб, наборов данных и конвейера). При использовании инструментов и интерфейсов API (за исключением API .NET) вы самостоятельно определяете эти сущности фабрики данных в формате JSON. Примеры с определениями JSON для сущностей фабрики данных, которые используются для копирования данных из базы данных SQL Azure, см. в разделе Примеры определений JSON этой статьи.

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

Свойства связанной службы

Связанная служба Azure SQL связывает базу данных Azure SQL с фабрикой данных. В таблице ниже приведено описание элементов JSON, которые относятся к связанной службе SQL Azure.

Свойство Описание Обязательно
type Для свойства type необходимо задать значение AzureSqlDatabase Да
connectionString В свойстве connectionString указываются сведения, необходимые для подключения к экземпляру Базы данных SQL Azure. Поддерживается только обычная проверка подлинности. Да

Важно!

Брандмауэр базы данных SQL Azure необходимо настроить, чтобы разрешить службам Azure получать доступ к серверу. Кроме того, при копировании данных в Базу данных SQL Azure из внешнего по отношению к Azure источника, включая локальные источники данных, с помощью шлюза фабрики данных необходимо настроить соответствующий диапазон IP-адресов для компьютера, который отправляет данные в Базу данных SQL Azure.

Свойства набора данных

Чтобы указать набор данных, представляющий входные или выходные данные в базе данных SQL Azure, присвойте свойству типа набора данных значение AzureSqlTable. Для свойства linkedServiceName набора данных задайте имя связанной службы Azure SQL.

Полный список разделов и свойств, используемых для определения наборов данных, см. в статье Наборы данных. Разделы структуры, доступности и политики JSON набора данных одинаковы для всех типов наборов данных (SQL Azure, большие двоичные объекты Azure, таблицы Azure и т. д.).

Раздел typeProperties во всех типах наборов данных разный. В нем содержатся сведения о расположении данных в хранилище данных. Раздел typeProperties набора данных с типом AzureSqlTable содержит следующие свойства.

Свойство Описание Обязательно
tableName Имя таблицы или представления в экземпляре Базы данных SQL Azure, на которое ссылается связанная служба. Да

Свойства действия копирования

Полный список разделов и свойств, используемых для определения действий, см. в статье Создание конвейеров. Свойства (включая имя, описание, входные и выходные таблицы, политику и т. д.) доступны для всех типов действий.

Примечание

Действие копирования принимает только один набор входных данных и возвращает только один набор выходных.

В свою очередь свойства, доступные в разделе typeProperties действия, зависят от конкретного типа действия. Для действия копирования они различаются в зависимости от типов источников и приемников.

При перемещении данных из базы данных SQL Azure в действии копирования задается тип источника SqlSource. Аналогично, при перемещении данных в базу данных SQL Azure в действии копирования задается тип источника SqlSink. Этот раздел содержит список свойств, поддерживаемых типами SqlSource и SqlSink.

SqlSource

Для действия копирования, если источник относится к типу SqlSource, в разделе typeProperties доступны указанные ниже свойства:

Свойство Описание Допустимые значения Обязательно
sqlReaderQuery Используйте пользовательский запрос для чтения данных. Строка запроса SQL. Например, select * from MyTable. нет
sqlReaderStoredProcedureName Имя хранимой процедуры, которая считывает данные из исходной таблицы. Имя хранимой процедуры. Последней инструкцией SQL должна быть инструкция SELECT в хранимой процедуре. нет
storedProcedureParameters Параметры для хранимой процедуры. Пары имен и значений. Имена и регистр параметров должны совпадать с именами и регистром параметров хранимой процедуры. нет

Если для SqlSource указано sqlReaderQuery, то действие копирования выполняет этот запрос для источника базы данных SQL Azure для получения данных. Кроме того, можно создать хранимую процедуру, указав sqlReaderStoredProcedureName и storedProcedureParameters (если хранимая процедура принимает параметры).

Если не указать sqlReaderQuery или sqlReaderStoredProcedureName, то для построения запроса (select column1, column2 from mytable) к базе данных SQL Azure будут использованы столбцы, определенные в разделе структуры набора данных JSON. Если у определения набора данных нет структуры, выбираются все столбцы из таблицы.

Примечание

При использовании sqlReaderStoredProcedureName по-прежнему необходимо указать значение свойства tableName в наборе данных JSON. Хотя какие-либо проверки этой таблицы отсутствуют.

Пример SqlSource

"source": {
    "type": "SqlSource",
    "sqlReaderStoredProcedureName": "CopyTestSrcStoredProcedureWithParameters",
    "storedProcedureParameters": {
        "stringData": { "value": "str3" },
        "identifier": { "value": "$$Text.Format('{0:yyyy}', SliceStart)", "type": "Int"}
    }
}

Определение хранимой процедуры:

CREATE PROCEDURE CopyTestSrcStoredProcedureWithParameters
(
    @stringData varchar(20),
    @identifier int
)
AS
SET NOCOUNT ON;
BEGIN
    select *
    from dbo.UnitTestSrcTable
    where dbo.UnitTestSrcTable.stringData != stringData
    and dbo.UnitTestSrcTable.identifier != identifier
END
GO

SqlSink

SqlSink поддерживает указанные ниже свойства.

Свойство Описание Допустимые значения Обязательно
writeBatchTimeout Время ожидания до выполнения операции пакетной вставки, пока не завершится срок ее действия. Интервал времени

Пример "00:30:00" (30 минут).
Нет
writeBatchSize Вставляет данные в таблицу SQL, когда размер буфера достигает значения writeBatchSize. Целое число (количество строк) Нет (значение по умолчанию — 10 000).
sqlWriterCleanupScript Укажите запрос на выполнение действия копирования, позволяющий убедиться в том, что данные конкретного среза очищены. Дополнительные сведения см. в разделе Повторяющаяся операция копирования. Инструкция запроса. Нет
sliceIdentifierColumnName Укажите имя столбца, в которое действие копирования добавляет автоматически созданный идентификатор среза. Этот идентификатор используется для очистки данных конкретного среза при повторном запуске. Дополнительные сведения см. в разделе Повторяющаяся операция копирования. Имя столбца с типом данных binary(32). Нет
sqlWriterStoredProcedureName Имя хранимой процедуры, в которой определяется, как применить исходные данные в целевой таблице. Например, можно определить выполнение операций upsert или преобразований с помощью вашей собственной бизнес-логики.

Обратите внимание, что эта хранимая процедура будет вызываться для каждого пакета. Чтобы однократно выполнить операцию, в которой не используются исходные данные, например удаление или усечение, примените свойство sqlWriterCleanupScript.
Имя хранимой процедуры. нет
storedProcedureParameters Параметры для хранимой процедуры. Пары имен и значений. Имена и регистр параметров должны совпадать с именами и регистром параметров хранимой процедуры. Нет
sqlWriterTableType Укажите имя типа таблицы для использования в хранимой процедуре. Действие копирования делает перемещаемые данные доступными во временной таблице этого типа. Код хранимой процедуры затем можно использовать для объединения копируемых и существующих данных. Имя типа таблицы. Нет

Пример SqlSink

"sink": {
    "type": "SqlSink",
    "writeBatchSize": 1000000,
    "writeBatchTimeout": "00:05:00",
    "sqlWriterStoredProcedureName": "CopyTestStoredProcedureWithParameters",
    "sqlWriterTableType": "CopyTestTableType",
    "storedProcedureParameters": {
        "identifier": { "value": "1", "type": "Int" },
        "stringData": { "value": "str1" },
        "decimalData": { "value": "1", "type": "Decimal" }
    }
}

Примеры JSON для копирования данных в базу данных SQL и обратно

Ниже приведены примеры с определениями JSON, которые можно использовать для создания конвейера с помощью Visual Studio или Azure PowerShell. В них показано, как копировать данные в Базу данных SQL Azure и хранилище BLOB-объектов Azure и обратно. Тем не менее данные можно копировать непосредственно из любых источников в любой указанный здесь приемник. Это делается с помощью действия копирования в фабрике данных Azure.

Пример. Копирование данных из базы данных SQL Azure в BLOB-объект Azure

Образец определяет следующие сущности фабрики данных.

  1. Связанная служба типа AzureSqlDatabase.
  2. Связанная служба типа AzureStorage.
  3. Входной набор данных типа AzureSqlTable.
  4. Выходной набор данных типа AzureBlob.
  5. Конвейер с действием копирования, в котором используются SqlSource и BlobSink.

В этом примере данные, относящиеся к одному временному ряду (за каждый час, каждый день и т. д.), каждый час копируются из таблицы в базе данных SQL Azure в большой двоичный объект. Используемые в этих примерах свойства JSON описаны в разделах, следующих за примерами.

Связанная служба "База данных SQL Azure":

{
  "name": "AzureSqlLinkedService",
  "properties": {
    "type": "AzureSqlDatabase",
    "typeProperties": {
      "connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;User ID=<username>@<servername>;Password=<password>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30"
    }
  }
}

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

Связанная служба хранилища BLOB-объектов Azure

{
  "name": "StorageLinkedService",
  "properties": {
    "type": "AzureStorage",
    "typeProperties": {
      "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountname>;AccountKey=<accountkey>"
    }
  }
}

Список свойств, поддерживаемых этой связанной службой, приведен в разделе Большой двоичный объект Azure.

Входной набор данных SQL Azure

В контексте примера предполагается, что вы создали таблицу «MyTable» в Azure SQL, и она содержит столбец с именем «timestampcolumn» для данных временных рядов.

Задав для параметра external значение true, мы сообщаем службе “Фабрика данных Azure”, что этот набор данных является внешним для фабрики данных и не был создан каким-либо действием в ней.

{
  "name": "AzureSqlInput",
  "properties": {
    "type": "AzureSqlTable",
    "linkedServiceName": "AzureSqlLinkedService",
    "typeProperties": {
      "tableName": "MyTable"
    },
    "external": true,
    "availability": {
      "frequency": "Hour",
      "interval": 1
    },
    "policy": {
      "externalData": {
        "retryInterval": "00:01:00",
        "retryTimeout": "00:10:00",
        "maximumRetry": 3
      }
    }
  }
}

Список свойств, поддерживаемых этим типом набора данных, приведен в разделе "Свойства типа «Набор данных Azure SQL»".

Выходной набор данных BLOB-объекта Azure

Данные записываются в новый BLOB-объект каждый час (frequency: hour, interval: 1). Путь к папке BLOB-объекта вычисляется динамически на основе времени начала обрабатываемого среза. В пути к папке используется год, месяц, день и час времени начала.

{
  "name": "AzureBlobOutput",
  "properties": {
    "type": "AzureBlob",
    "linkedServiceName": "StorageLinkedService",
    "typeProperties": {
      "folderPath": "mycontainer/myfolder/yearno={Year}/monthno={Month}/dayno={Day}/hourno={Hour}/",
      "partitionedBy": [
        {
          "name": "Year",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "yyyy"
          }
        },
        {
          "name": "Month",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "MM"
          }
        },
        {
          "name": "Day",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "dd"
          }
        },
        {
          "name": "Hour",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "HH"
          }
        }
      ],
      "format": {
        "type": "TextFormat",
        "columnDelimiter": "\t",
        "rowDelimiter": "\n"
      }
    },
    "availability": {
      "frequency": "Hour",
      "interval": 1
    }
  }
}

Список свойств, поддерживаемых этим типом набора данных, приведен в разделе Свойства типа «Набор данных большого двоичного объекта Azure» .

Действие копирования в конвейере с базой данных SQL в качестве источника и BLOB-объектом в качестве приемника:

Конвейер содержит действие копирования, которое использует входной и выходной наборы данных и выполняется каждый час. В определении JSON конвейера для типа source установлено значение SqlSource, а для типа sink — значение BlobSink. SQL-запрос, указанный для свойства SqlReaderQuery , выбирает для копирования данные за последний час.

{
  "name":"SamplePipeline",
  "properties":{
    "start":"2014-06-01T18:00:00",
    "end":"2014-06-01T19:00:00",
    "description":"pipeline for copy activity",
    "activities":[
      {
        "name": "AzureSQLtoBlob",
        "description": "copy activity",
        "type": "Copy",
        "inputs": [
          {
            "name": "AzureSQLInput"
          }
        ],
        "outputs": [
          {
            "name": "AzureBlobOutput"
          }
        ],
        "typeProperties": {
          "source": {
            "type": "SqlSource",
            "SqlReaderQuery": "$$Text.Format('select * from MyTable where timestampcolumn >= \\'{0:yyyy-MM-dd HH:mm}\\' AND timestampcolumn < \\'{1:yyyy-MM-dd HH:mm}\\'', WindowStart, WindowEnd)"
          },
          "sink": {
            "type": "BlobSink"
          }
        },
        "scheduler": {
          "frequency": "Hour",
          "interval": 1
        },
        "policy": {
          "concurrency": 1,
          "executionPriorityOrder": "OldestFirst",
          "retry": 0,
          "timeout": "01:00:00"
        }
      }
    ]
  }
}

В этом примере для свойства SqlSource указано sqlReaderQuery . Действие копирования выполняет этот запрос для источника Базы данных SQL Azure для получения данных. Кроме того, можно создать хранимую процедуру, указав sqlReaderStoredProcedureName и storedProcedureParameters (если хранимая процедура принимает параметры).

Если не указать sqlReaderQuery или sqlReaderStoredProcedureName, то для построения запроса к базе данных SQL Azure будут использованы столбцы, определенные в разделе структуры набора данных JSON. Например, так: select column1, column2 from mytable. Если у определения набора данных нет структуры, выбираются все столбцы из таблицы.

Список свойств, поддерживаемых SqlSource и BlobSink, см. в разделах SqlSource и BlobSink.

Пример. Копирование данных из BLOB-объекта Azure в базу данных SQL Azure

Образец определяет следующие сущности фабрики данных.

  1. Связанная служба типа AzureSqlDatabase.
  2. Связанная служба типа AzureStorage.
  3. Входной набор данных типа AzureBlob.
  4. Выходной набор данных типа AzureSqlTable.
  5. Конвейер с действием копирования, в котором используются BlobSource и SqlSink.

В этом примере данные, относящиеся к одному временному ряду (за каждый час, каждый день и т. д.), каждый час копируются из большого двоичного объекта Azure в таблицу в базе данных SQL Azure. Используемые в этих примерах свойства JSON описаны в разделах, следующих за примерами.

Связанная служба SQL Azure

{
  "name": "AzureSqlLinkedService",
  "properties": {
    "type": "AzureSqlDatabase",
    "typeProperties": {
      "connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;User ID=<username>@<servername>;Password=<password>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30"
    }
  }
}

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

Связанная служба хранилища BLOB-объектов Azure

{
  "name": "StorageLinkedService",
  "properties": {
    "type": "AzureStorage",
    "typeProperties": {
      "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountname>;AccountKey=<accountkey>"
    }
  }
}

Список свойств, поддерживаемых этой связанной службой, приведен в разделе Большой двоичный объект Azure.

Входной набор данных BLOB-объекта Azure

Данные берутся из нового BLOB-объекта каждый час (frequency: hour, interval: 1). Путь к папке с BLOB-объектом и имя файла вычисляются динамически на основе времени начала обрабатываемого среза. В пути к папке используется год, месяц и день начала, а в имени файла — час начала. Задав для параметра external значение true, мы сообщаем службе “Фабрика данных”, что эта таблица является внешней для фабрики данных и не была создана каким-либо действием в фабрике данных.

{
  "name": "AzureBlobInput",
  "properties": {
    "type": "AzureBlob",
    "linkedServiceName": "StorageLinkedService",
    "typeProperties": {
      "folderPath": "mycontainer/myfolder/yearno={Year}/monthno={Month}/dayno={Day}/",
      "fileName": "{Hour}.csv",
      "partitionedBy": [
        {
          "name": "Year",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "yyyy"
          }
        },
        {
          "name": "Month",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "MM"
          }
        },
        {
          "name": "Day",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "dd"
          }
        },
        {
          "name": "Hour",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "HH"
          }
        }
      ],
      "format": {
        "type": "TextFormat",
        "columnDelimiter": ",",
        "rowDelimiter": "\n"
      }
    },
    "external": true,
    "availability": {
      "frequency": "Hour",
      "interval": 1
    },
    "policy": {
      "externalData": {
        "retryInterval": "00:01:00",
        "retryTimeout": "00:10:00",
        "maximumRetry": 3
      }
    }
  }
}

Список свойств, поддерживаемых этим типом набора данных, приведен в разделе Свойства типа «Набор данных большого двоичного объекта Azure» .

Выходной набор данных Базы данных SQL Azure:

В этом примере данные копируются в таблицу MyTable, которая создана в SQL Azure. Создайте таблицу в базе данных SQL Azure с тем количеством столбцов, которое должно быть в CSV-файле большого двоичного объекта. Новые строки добавляются в таблицу каждый час.

{
  "name": "AzureSqlOutput",
  "properties": {
    "type": "AzureSqlTable",
    "linkedServiceName": "AzureSqlLinkedService",
    "typeProperties": {
      "tableName": "MyOutputTable"
    },
    "availability": {
      "frequency": "Hour",
      "interval": 1
    }
  }
}

Список свойств, поддерживаемых этим типом набора данных, приведен в разделе "Свойства типа «Набор данных Azure SQL»".

Действие копирования в конвейере с BLOB-объектом в качестве источника и базой данных SQL в качестве приемника:

Конвейер содержит действие копирования, которое использует входной и выходной наборы данных и выполняется каждый час. В определении JSON конвейера для типа source установлено значение BlobSource, а для типа sink — значение SqlSink.

{
  "name":"SamplePipeline",
  "properties":{
    "start":"2014-06-01T18:00:00",
    "end":"2014-06-01T19:00:00",
    "description":"pipeline with copy activity",
    "activities":[
      {
        "name": "AzureBlobtoSQL",
        "description": "Copy Activity",
        "type": "Copy",
        "inputs": [
          {
            "name": "AzureBlobInput"
          }
        ],
        "outputs": [
          {
            "name": "AzureSqlOutput"
          }
        ],
        "typeProperties": {
          "source": {
            "type": "BlobSource",
            "blobColumnSeparators": ","
          },
          "sink": {
            "type": "SqlSink"
          }
        },
        "scheduler": {
          "frequency": "Hour",
          "interval": 1
        },
        "policy": {
          "concurrency": 1,
          "executionPriorityOrder": "OldestFirst",
          "retry": 0,
          "timeout": "01:00:00"
        }
      }
    ]
  }
}

Список свойств, поддерживаемых SqlSink и BlobSource, см. в разделах SqlSink и BlobSource.

Столбцы идентификаторов в целевой базе данных

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

Исходная таблица:

create table dbo.SourceTbl
(
    name varchar(100),
    age int
)

Целевая таблица:

create table dbo.TargetTbl
(
    identifier int identity(1,1),
    name varchar(100),
    age int
)

Обратите внимание, что в целевой таблице есть столбец идентификаторов.

Определение JSON исходного набора данных

{
    "name": "SampleSource",
    "properties": {
        "type": " SqlServerTable",
        "linkedServiceName": "TestIdentitySQL",
        "typeProperties": {
            "tableName": "SourceTbl"
        },
        "availability": {
            "frequency": "Hour",
            "interval": 1
        },
        "external": true,
        "policy": {}
    }
}

Определение JSON целевого набора данных

{
    "name": "SampleTarget",
    "properties": {
        "structure": [
            { "name": "name" },
            { "name": "age" }
        ],
        "type": "AzureSqlTable",
        "linkedServiceName": "TestIdentitySQLSource",
        "typeProperties": {
            "tableName": "TargetTbl"
        },
        "availability": {
            "frequency": "Hour",
            "interval": 1
        },
        "external": false,
        "policy": {}
    }
}

Обратите внимание, что у исходной и целевой таблиц разные схемы (в целевой есть дополнительный столбец с идентификаторами). В этом случае необходимо указать свойство structure в определении целевого набора данных, которое не включает в себя столбец идентификаторов.

Вызов хранимой процедуры из приемника SQL

Пример вызова хранимой процедуры из приемника SQL в действии копирования в конвейере приведен в статье Invoke stored procedure from copy activity in Azure Data Factory (Вызов хранимой процедуры из действия копирования в фабрике данных Azure).

Сопоставление типов для Базы данных SQL Azure

Как упоминалось в статье о действиях перемещения данных, во время копирования типы источников автоматически преобразовываются в типы приемников. Такое преобразование выполняется в два этапа:

  1. Преобразование собственных типов источников в тип .NET.
  2. Преобразование типа .NET в собственный тип приемника.

Когда данные перемещаются в базу данных SQL Azure и обратно, для преобразования типа SQL в тип .NET и наоборот используются следующие сопоставления. Сопоставление аналогично сопоставлению типов данных SQL Server для ADO.NET.

Тип ядра СУБД SQL Server Тип платформы .NET Framework
BIGINT Int64
binary Byte[]
bit Логическое
char String, Char[]
Дата Дата и время
Datetime Дата и время
datetime2 Дата и время
Datetimeoffset DateTimeOffset
Decimal Decimal
FILESTREAM attribute (varbinary(max)) Byte[]
Float Double
Изображение Byte[]
INT Int32
money Decimal
nchar String, Char[]
ntext String, Char[]
NUMERIC Decimal
nvarchar String, Char[]
real Один
rowversion Byte[]
smalldatetime Дата и время
smallint Int16
smallmoney Decimal
sql_variant Object *
текст String, Char[]
time TimeSpan
TIMESTAMP Byte[]
tinyint Byte
UNIQUEIDENTIFIER Guid
varbinary Byte[]
varchar String, Char[]
xml Xml

Сопоставление столбцов источника и приемника

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

Повторяющаяся операция копирования

При копировании данных в базу данных SQL Server действие копирования по умолчанию добавляет данные в таблицу приемника. Чтобы вместо этого выполнить операцию UPSERT, изучите раздел Повторяемая запись в SqlSink.

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

Производительность и настройка

Ознакомьтесь со статьей Руководство по настройке производительности действия копирования, в которой описываются ключевые факторы, влияющие на производительность перемещения данных (действие копирования) в фабрике данных Azure, и различные способы оптимизации этого процесса.