你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Azure 数据工厂或 Synapse Analytics 从 DB2 复制数据

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

提示

试用 Microsoft Fabric 中的数据工厂,这是一种适用于企业的一站式分析解决方案。 Microsoft Fabric 涵盖了从数据移动到数据科学、实时分析、商业智能和报告的所有内容。 了解如何免费开始新的试用

本文概述如何使用 Azure 数据工厂和 Synapse Analytics 管道中的复制活动从 DB2 数据库复制数据。 它是基于概述复制活动总体的复制活动概述一文。

支持的功能

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

支持的功能 IR
复制活动(源/-) ① ②
Lookup 活动 ① ②

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

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

具体而言,此 DB2 连接器支持以下 IBM DB2 平台和版本,以及分布式关系数据库结构 (DRDA) SQL 访问管理器 (SQLAM) 版本 9、版本 10 和版本 11。 它采用 DDM/DRDA 协议。

  • IBM DB2 for z/OS 12.1
  • IBM DB2 for z/OS 11.1
  • IBM DB2 for i 7.3
  • IBM DB2 for i 7.2
  • IBM DB2 for i 7.1
  • IBM DB2 for LUW 11
  • IBM DB2 for LUW 10.5
  • IBM DB2 for LUW 10.1

Prerequisites

如果数据存储位于本地网络、Azure 虚拟网络或 Amazon Virtual Private Cloud 内部,则需要配置自承载集成运行时才能连接到该数据存储。

如果数据存储是托管的云数据服务,则可以使用 Azure Integration Runtime。 如果访问范围限制为防火墙规则中允许的 IP,你可以选择将 Azure Integration Runtime IP 添加到允许列表。

此外,还可以使用 Azure 数据工厂中的托管虚拟网络集成运行时功能访问本地网络,而无需安装和配置自承载集成运行时。

要详细了解网络安全机制和数据工厂支持的选项,请参阅数据访问策略

集成运行时提供内置 DB2 驱动程序,因此从 DB2 复制数据时,无需手动安装任何驱动程序。

入门

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

使用 UI 创建到 DB2 的链接服务

使用以下步骤在 Azure 门户 UI 中创建一个到 DB2 的链接服务。

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

  2. 搜索“DB2”并选择“DB2 连接器”。

    DB2 连接器的屏幕截图。

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

    DB2 的链接服务配置的屏幕截图。

连接器配置详细信息

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

链接服务属性

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

properties 说明 必选
类型 type 属性必须设置为:Db2
connectionString 指定连接到 DB2 实例所需的信息。
还可以将密码放在 Azure 密钥保管库中,并从连接字符串中拉取 password 配置。 有关更多详细信息,请参阅以下示例和在 Azure 密钥保管库中存储凭据一文。
connectVia 用于连接到数据存储的集成运行时。 若要了解详细信息,请参阅先决条件部分。 如果未指定,则使用默认 Azure Integration Runtime。

连接字符串中的典型属性:

properties 说明 必选
服务器 DB2 服务器的名称。 可以在冒号分隔的服务器名称后面指定端口号,例如 server:port
DB2 连接器采用 DDM/DRDA 协议,如果未指定,则默认使用端口 50000。 特定 DB2 数据库使用的端口可能会因版本和设置而有所不同,例如,对于 DB2 LUW,默认端口为 50000,对于 AS400,默认端口为 446 或 448(如果启用 TLS)。 请参阅以下 DB2 文档,了解端口的典型配置方式:DB2 z/OSDB2 iSeriesDB2 LUW
数据库 DB2 数据库的名称。
authenticationType 用于连接 DB2 数据库的身份验证类型。
允许的值为:Basic
用户名 指定用于连接到 DB2 数据库的用户名。
密码 指定为用户名指定的用户帐户的密码。 将此字段标记为 SecureString 以安全地存储它,或引用存储在 Azure Key Vault 中的机密
packageCollection 指定在查询数据库时此服务自动创建所需包的位置。 如果未设置此值,服务将使用 {username} 作为默认值。
certificateCommonName 当使用安全套接字层 (SSL) 或传输层安全性 (TLS) 加密时,必须为“证书公用名”输入一个值。

提示

如果收到指出 The package corresponding to an SQL statement execution request was not found. SQLSTATE=51002 SQLCODE=-805 的错误消息,则原因是没有为用户创建所需的包。 默认情况下,服务会尝试在集合下创建一个包,将其命名为你连接到 DB2 时使用的用户。 指定包集合属性,以指示在查询数据库时希望此服务在哪里创建所需的包。 如果无法确定包集合名称,请尝试设置 packageCollection=NULLID

示例:

{
    "name": "Db2LinkedService",
    "properties": {
        "type": "Db2",
        "typeProperties": {
            "connectionString": "server=<server:port>;database=<database>;authenticationType=Basic;username=<username>;password=<password>;packageCollection=<packagecollection>;certificateCommonName=<certname>;"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

示例:在 Azure 密钥保管库中存储密码

{
    "name": "Db2LinkedService",
    "properties": {
        "type": "Db2",
        "typeProperties": {
            "connectionString": "server=<server:port>;database=<database>;authenticationType=Basic;username=<username>;packageCollection=<packagecollection>;certificateCommonName=<certname>;",
            "password": { 
                "type": "AzureKeyVaultSecret", 
                "store": { 
                    "referenceName": "<Azure Key Vault linked service name>", 
                    "type": "LinkedServiceReference" 
                }, 
                "secretName": "<secretName>" 
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

如果使用的是具有以下有效负载的 DB2 链接服务,它仍然按原样受支持,但建议使用新的版本。

先前的有效负载:

{
    "name": "Db2LinkedService",
    "properties": {
        "type": "Db2",
        "typeProperties": {
            "server": "<servername:port>",
            "database": "<dbname>",
            "authenticationType": "Basic",
            "username": "<username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

数据集属性

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

若要从 DB2 复制数据,支持以下属性:

properties 说明 必选
类型 数据集的 type 属性必须设置为:Db2Table
架构 架构的名称。 否(如果指定了活动源中的“query”)
表的名称。 否(如果指定了活动源中的“query”)
tableName 具有架构的表名称。 支持此属性以提供后向兼容性。 为新的工作负荷使用 schematable 否(如果指定了活动源中的“query”)

示例

{
    "name": "DB2Dataset",
    "properties":
    {
        "type": "Db2Table",
        "typeProperties": {},
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<DB2 linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

如果使用的是 RelationalTable 类型的数据集,它仍然按原样受支持,但建议使用新的版本。

复制活动属性

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

DB2 作为源

若要从 DB2 复制数据,请在复制活动源部分支持以下属性:

properties 说明 必选
类型 复制活动源的 type 属性必须设置为:Db2Source
查询 使用自定义 SQL 查询读取数据。 例如:"query": "SELECT * FROM \"DB2ADMIN\".\"Customers\"" 否(如果指定了数据集中的“tableName”)

示例:

"activities":[
    {
        "name": "CopyFromDB2",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<DB2 input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "Db2Source",
                "query": "SELECT * FROM \"DB2ADMIN\".\"Customers\""
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

如果使用的是 RelationalSource 类型的源,它仍然按原样受支持,但建议使用新的版本。

DB2 的数据类型映射

从 DB2 复制数据时,将使用以下映射从 DB2 数据类型映射到在服务内部使用的临时数据类型。 若要了解复制活动如何将源架构和数据类型映射到接收器,请参阅架构和数据类型映射

DB2 数据库类型 临时服务数据类型
BigInt Int64
Binary Byte[]
Blob Byte[]
Char 字符串
Clob 字符串
Date Datetime
DB2DynArray 字符串
DbClob 字符串
Decimal Decimal
DecimalFloat Decimal
Double Double
Float Double
Graphic 字符串
Integer Int32
LongVarBinary Byte[]
LongVarChar 字符串
LongVarGraphic 字符串
Numeric Decimal
雷亚尔 Single
SmallInt Int16
时间 TimeSpan
时间戳 DateTime
VarBinary Byte[]
VarChar 字符串
VarGraphic 字符串
Xml Byte[]

Lookup 活动属性

若要详细了解这些属性,请查看“查找”活动

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