Compartir a través de

使用 Azure 数据工厂或 Synapse Analytics 从/向 ODBC 数据存储复制数据

适用于:Azure 数据工厂 Azure Synapse Analytics

本文概述了如何在 Azure 数据工厂中使用复制活动从/向 ODBC 数据存储复制数据。 它是基于概述复制活动总体的复制活动概述一文。

支持的功能

此 ODBC 连接器支持以下功能:

支持的功能 IR
复制活动(源/接收器)
Lookup 活动

① Azure 集成运行时 ② 自承载集成运行时

如需可以用作源/接收器的数据存储的列表,请参阅支持的数据存储表。

具体而言,此 ODBC 连接器支持使用 BasicAnonymous 身份验证从/向任何与 ODBC 兼容的数据存储复制数据。 需要 64 位 ODBC 驱动程序。 对于 ODBC 接收器,此服务支持 ODBC 2.0 标准版。

先决条件

要使用此 ODBC 连接器,需要:

  • 设置自承载集成运行时。 有关详细信息,请参阅自承载集成运行时一文。
  • 在集成运行时计算机上安装数据存储的 64 位 ODBC 驱动程序。

入门

若要使用管道执行复制活动,可以使用以下工具或 SDK 之一:

使用 UI 创建一个到 ODBC 数据存储的链接服务

使用以下步骤在 Azure 门户 UI 中创建一个到 ODBC 数据存储的链接服务。

  1. 浏览到 Azure 数据工厂或 Synapse 工作区中的“管理”选项卡并选择“链接服务”,然后单击“新建”:

  2. 搜索 ODBC 并选择 ODBC 连接器。

    ODBC 连接器的屏幕截图。

  3. 配置服务详细信息、测试连接并创建新的链接服务。

    ODBC 数据存储的链接服务配置的屏幕截图。

连接器配置详细信息

对于特定于 ODBC 连接器的数据工厂实体,以下部分提供有关用于定义这些实体的属性的详细信息。

链接服务属性

ODBC 链接服务支持以下属性:

属性 描述 必需
type type 属性必须设置为:Odbc
connectionString 不包括凭据部分的连接字符串。 可以使用类似 Driver={SQL Server};Server=Server.database.chinacloudapi.cn; Database=TestDatabase; 的模式指定连接字符串,也可以利用在 Integration Runtime 计算机上使用 DSN=<name of the DSN on IR machine>; 设置的系统 DSN(数据源名称)(仍需要相应地指定链接服务中的凭据部分)。
还可以将密码放在 Azure 密钥保管库中,并从连接字符串中拉取 password 配置。 有关更多详细信息,请参阅在 Azure Key Vault 中存储凭据
authenticationType 用于连接 ODBC 数据存储的身份验证类型。
允许值包括:BasicAnonymous
userName 如果使用基本身份验证,请指定用户名。
password 指定为 userName 指定的用户帐户的密码。 将此字段标记为 SecureString 以安全地存储它,或引用 Azure Key Vault 中存储的机密
credential 连接字符串的访问凭据部分,采用特定于驱动程序的属性值格式指定。 示例:"RefreshToken=<secret refresh token>;"。 将此字段标记为 SecureString。
connectVia 用于连接到数据存储的集成运行时。 如先决条件中所述,需要自承载集成运行时。

示例 1:使用 Basic 身份验证

{
    "name": "ODBCLinkedService",
    "properties": {
        "type": "Odbc",
        "typeProperties": {
            "connectionString": "<connection string>",
            "authenticationType": "Basic",
            "userName": "<username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

示例 2:使用 Anonymous 身份验证

{
    "name": "ODBCLinkedService",
    "properties": {
        "type": "Odbc",
        "typeProperties": {
            "connectionString": "<connection string>",
            "authenticationType": "Anonymous",
            "credential": {
                "type": "SecureString",
                "value": "RefreshToken=<secret refresh token>;"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

数据集属性

有关可用于定义数据集的各部分和属性的完整列表,请参阅数据集一文。 本部分提供 ODBC 数据集支持的属性列表。

若要从 ODBC 兼容的数据存储复制数据/将数据复制到 ODBC 兼容的数据存储,支持以下属性:

属性 描述 必需
type 数据集的 type 属性必须设置为:OdbcTable
tableName ODBC 数据存储中表的名称。 源为否(如果指定了活动源中的“query”);
接收器为是

示例

{
    "name": "ODBCDataset",
    "properties": {
        "type": "OdbcTable",
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<ODBC linked service name>",
            "type": "LinkedServiceReference"
        },
        "typeProperties": {
            "tableName": "<table name>"
        }
    }
}

如果使用 RelationalTable 类型数据集,该数据集仍按原样受支持,但我们建议今后使用新数据集。

复制活动属性

有关可用于定义活动的各部分和属性的完整列表,请参阅管道一文。 本部分提供 ODBC 源支持的属性列表。

ODBC 作为源

从 ODBC 兼容的数据存储复制数据时,复制活动的 source 节支持以下属性:

属性 描述 必需
type 复制活动 source 的 type 属性必须设置为:OdbcSource
query 使用自定义 SQL 查询读取数据。 例如:"SELECT * FROM MyTable" 否(如果指定了数据集中的“tableName”)

示例:

"activities":[
    {
        "name": "CopyFromODBC",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<ODBC input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "OdbcSource",
                "query": "SELECT * FROM MyTable"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

如果使用 RelationalSource 类型源,该源仍按原样受支持,但我们建议今后使用新源。

ODBC 作为接收器

要向与 ODBC 兼容的数据存储复制数据,请将复制活动中的接收器类型设置为“OdbcSink”。 复制活动接收器部分中支持以下属性:

属性 描述 必需
type 复制活动接收器的 type 属性必须设置为:OdbcSink
writeBatchTimeout 超时之前等待批插入操作完成时的等待时间。
允许的值为:timespan。 示例:"00:30:00"(30 分钟)。
writeBatchSize 缓冲区大小达到 writeBatchSize 时会数据插入 SQL 表。
允许的值为:整数(行数)。
否(默认值为 0 - 自动检测)
preCopyScript 每次运行时,将数据写入到数据存储之前,指定复制活动要执行的 SQL 查询。 此属性可用于清理预先加载的数据。

注意

对于“writeBatchSize”,如果未设置(自动检测),则复制活动首先检测驱动程序是否支持批处理操作,如果支持,则将其设置为 10000,否则或将其设置为 1。 如果显式设置 0 以外的值,则复制活动遵循值,如果驱动程序不支持批处理操作,则会在运行时失败。

示例:

"activities":[
    {
        "name": "CopyToODBC",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<ODBC output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "OdbcSink",
                "writeBatchSize": 100000
            }
        }
    }
]

查找活动属性

若要了解有关属性的详细信息,请查看 Lookup 活动

解决连接问题

若要解决连接问题,请使用“集成运行时配置管理器”的“诊断”选项卡。

  1. 启动集成运行时配置管理器。
  2. 切换到“诊断”选项卡。
  3. 在“测试连接”部分下,选择数据存储的“类型”(链接服务)。
  4. 指定用于连接数据存储的“连接字符串”,选择“身份验证”并输入“用户名”、“密码”和/或“凭据”。
  5. 单击“测试连接”以测试数据存储的连接。

有关复制活动支持作为源和接收器的数据存储的列表,请参阅支持的数据存储