IBM Db2 数据库

总结

描述
发布状态 正式发布
产品 Excel
Power BI (语义模型)
Power BI (数据流)
Fabric(数据流 Gen2)
Power Apps(数据流)
Dynamics 365 Customer Insights
支持的身份验证类型 基本
数据库
Windows操作系统
函数参考文档 DB2.Database

备注

由于部署计划和主机特定的功能,某些功能可能存在于一个产品中,但不是其他功能。

先决条件

默认情况下,IBM Db2 数据库连接器使用 Microsoft 驱动程序连接到您的数据。 如果选择在 Power Query Desktop 的高级选项中使用 IBM 驱动程序,则必须首先在用于连接到数据的计算机上安装用于 .NET 的 IBM Db2 驱动程序。 此驱动程序的名称会不时更改,因此请务必安装适用于 .NET 的 IBM Db2 驱动程序。 有关如何下载、安装和配置适用于 .NET 的 IBM Db2 驱动程序的说明,请转到 下载初始版本 11.5 客户端和驱动程序。 详细信息:驱动程序限制确保安装 IBM Db2 驱动程序

支持的功能

  • 进口
  • DirectQuery (Power BI 语义模型)
  • 高级选项
    • 驱动程序(IBM 或Microsoft)
    • 命令超时(分钟)
    • 包集合
    • SQL 语句
    • 包含关系列
    • 在完整层次结构中导航

从 Power Query Desktop 连接到 IBM Db2 数据库

若要建立连接,请执行以下步骤:

  1. 从“获取数据”中选择“IBM Db2 数据库”选项。

  2. 在“服务器”中指定要连接的 IBM Db2 服务器。 如果需要端口,请使用 ServerName:Port格式指定端口,其中 端口 为端口号。 此外,在 数据库中输入要访问的 IBM Db2 数据库。 在此示例中,服务器名称和端口为 TestIBMDb2server.contoso.com:4000,访问的 IBM Db2 数据库为 NORTHWD2

    输入 IBM Db2 数据库连接。

  3. 如果您从 Power BI Desktop 进行连接,请选择 导入DirectQuery 数据连接模式。 这些示例步骤的其余部分使用导入数据连接模式。 若要了解有关 DirectQuery 的详细信息,请转到 在 Power BI Desktop中使用 DirectQuery。

    注意

    默认情况下,IBM Db2 数据库对话框在登录期间使用Microsoft驱动程序。 如果要使用 IBM 驱动程序,请打开 高级选项 并选择 IBM。 详细信息:通过高级选项进行连接

    如果选择 DirectQuery 作为数据连接模式,则会禁用高级选项中的 SQL 语句。 DirectQuery 目前不支持在 IBM Db2 连接器的本机数据库查询之上进行查询下推。

  4. 选择“确定”。

  5. 如果这是你第一次连接到此 IBM Db2 数据库,请选择要使用的身份验证类型,输入凭据,然后选择 连接。 有关身份验证的详细信息,请转到使用数据源进行身份验证

    输入 IBM Db2 数据库凭据。

    默认情况下,Power Query 会尝试使用加密连接连接到 IBM Db2 数据库。 如果 Power Query 无法使用加密连接进行连接,将显示“无法连接”对话框。 若要使用未加密的连接进行连接,请选择“确定”

    无法连接对话框

  6. 导航器中,选择所需的数据,然后选择 加载 以加载数据或 转换数据 来转换数据。

    从数据库 中选择所需的数据

从 Power Query Online 连接到 IBM Db2 数据库

若要建立连接,请执行以下步骤:

  1. 在“Power Query - 连接到数据源”页中选择“IBM Db2 数据库”选项。

  2. 在“服务器”中指定要连接的 IBM Db2 服务器。 如果需要端口,请使用 ServerName:Port格式指定端口,其中 端口 为端口号。 此外,在 数据库中输入要访问的 IBM Db2 数据库。 在此示例中,服务器名称和端口为 TestIBMDb2server.contoso.com:4000,所访问的 IBM Db2 数据库是 NORTHWD2

  3. 选择本地数据网关的名称。

    注意

    必须为此连接器选择本地数据网关,无论 IBM Db2 数据库位于本地网络还是在线上。

  4. 如果这是您首次连接到此 IBM Db2 数据库,在 身份验证类型中选择连接所需的凭据类型。 如果计划使用在 IBM Db2 数据库中创建的帐户而不是 Windows 身份验证,请选择 基本

  5. 输入凭据。

  6. 如果要使用加密连接,请选择“使用加密连接;如果要使用未加密的连接,请清除该选项。

    输入 IBM Db2 数据库联机连接。

  7. 选择“下一步”继续。

  8. 在“导航器”中,选择所需的数据,然后选择“转换数据”在 Power Query 编辑器中转换数据。

    选择要在导航器 中转换的数据

使用高级选项进行连接

Power Query 提供了一组高级选项,可根据需要添加到查询。

IBM Db2 数据库连接对话框中包含的高级选项。

下表列出了可在 Power Query 中设置的所有高级选项。

高级选项 描述
司机 确定用于连接到 IBM Db2 数据库的驱动程序。 选项为 IBM 和 Windows(默认值)。 如果选择 IBM 驱动程序,必须先确保计算机上安装适用于 .NET 的 IBM Db2 驱动程序。 此选项仅在 Power Query Desktop 中可用。 详细信息:确保安装 IBM Db2 驱动程序
命令超时时间(以分钟为单位) 如果连接持续时间超过 10 分钟(默认超时),则可以输入另一个值(以分钟为单位),使连接保持打开时间更长。
包集合 指定查找包的位置。 包是 Db2 在处理 SQL 语句时使用的控制结构,并在必要时自动创建。 默认情况下,此选项使用值 NULLID。 仅当使用 Microsoft 驱动程序时可用。 详细信息:DB2 包:概念、示例和常见问题
SQL 语句 有关信息,请转到使用本机数据库查询从数据库导入数据
包含关系列 如果选中,则包含可能与其他表格有关系的列。 如果清除此框,则看不到这些列。
在完整层次结构中导航 如果选中,导航器会显示你连接到的数据库中表的完整层次结构。 如果清空,导航器仅显示那些列和行中包含数据的表格。

选择所需的高级选项后,请在 Power Query Desktop 中选择 “确定”,或者在 Power Query Online 中选择 “下一步”,以连接到 IBM Db2 数据库。

问题和限制

驱动程序限制

Microsoft驱动程序与Microsoft Host Integration Server中使用的驱动程序相同,称为“ADO.NET Provider for DB2”。 IBM 驱动程序是适用于 .NET 的 IBM Db/2 驱动程序。 此驱动程序的名称会不时更改,因此请确保它与 .NET 兼容,这与与 OLE/DB、ODBC 或 JDBC 一起使用的 IBM Db2 驱动程序不同。

如果使用 Power Query Desktop,可以选择使用Microsoft驱动程序(默认值)或 IBM 驱动程序。 目前,Power Query Online 仅使用Microsoft驱动程序。 每个驱动程序都有其限制。

  • Microsoft驱动程序
    • 仅支持 2024 年 12 月或更高版本的 Power BI Desktop 中的传输层安全性 (TLS)
  • IBM 驱动程序
    • 使用适用于 .NET 的 IBM Db2 驱动程序时,IBM Db2 数据库连接器不适用于大型机或 IBM i 系统
    • 不支持 DirectQuery

Microsoft为Microsoft驱动程序提供支持,但不支持 IBM 驱动程序。 但是,如果你的 IT 部门已在计算机上安装并配置了它,则 IT 部门应知道如何对 IBM 驱动程序进行故障排除。

DirectQuery 不支持本机查询

在 Power Query Desktop 中选择 DirectQuery 作为数据连接模式时,高级选项中的 SQL 语句文本框处于禁用状态。 它已被禁用,因为 Power Query IBM Db2 连接器目前不支持在本机数据库查询中进行查询下推。

故障排除

确保已安装 IBM Db2 驱动程序

如果选择使用适用于 Power Query Desktop 的 IBM Db2 驱动程序,则首先必须在计算机上安装、安装和配置驱动程序。 若要确保已安装 IBM Db2 驱动程序,请执行以下操作:

  1. 在计算机上打开 Windows PowerShell。

  2. 输入以下命令:

    [System.Data.Common.DbProviderFactories]::GetFactoryClasses() | ogv

  3. 在打开的对话框中,应在 InvariantName 列中看到以下名称:

    IBM.Data.DB2

如果此名称位于 InvariantName 列中,则 IBM Db2 驱动程序已安装并正确配置。

SQLCODE -805 和 SQLCODE -551 错误代码

尝试连接到 IBM Db2 数据库时,有时可能会遇到常见的错误 SQLCODE -805,这表示包在 NULLID 或其他集合中找不到(在 Power Query 包连接 配置中指定的)。 还可能会遇到常见的 SQLCODE -551 错误,这表示无法创建包,因为缺少包绑定机构。

通常,SQLCODE -805 后跟 SQLCODE -551,但你只会看到第二个异常。 实际上,问题相同。 你没有权限将包绑定到 NULLID 或指定的集合。

一般情况下,大多数 IBM Db2 管理员不会向最终用户赋予绑定包权限,尤其是在 IBM z/OS(大型机)或 IBM i(AS/400)环境中。 Linux、Unix 或 Windows 上的 Db2 与其他系统不同的是,用户帐户默认具有绑定权限,这会在用户自己的集合中创建 MSCS001 (Cursor Stability) 包(名称 = 用户登录名)。

如果没有绑定包权限,则需要向 Db2 管理员请求包绑定权限。 使用此包绑定权限,连接到数据库并提取数据,这将自动创建该包。 之后,管理员可以撤销打包绑定权限。 此外,管理员之后可以将包“副本绑定”到其他集合,以提升并发性,且更符合你对包绑定位置的内部标准等。

连接到 IBM Db2 for z/OS 时,Db2 管理员可以执行以下步骤。

  1. 使用以下命令之一向用户授予绑定新包的权限:

    • GRANT BINDADD ON SYSTEM TO <authorization_name>
    • GRANT PACKADM ON <collection_name> TO <authorization_name>
  2. 使用 Power Query 连接到 IBM Db2 数据库并检索架构、表和视图的列表。 Power Query IBM Db2 数据库连接器将自动创建包 NULLID.MSCS001,然后将包的执行权限授予给公共用户。

  3. 使用以下命令之一撤销将新包绑定到用户的授权:

    • REVOKE BINDADD FROM <authorization_name>
    • REVOKE PACKADM ON <collection_name> FROM <authorization_name>

连接到 IBM Db2 for Linux、Unix 或 Windows 时,Db2 管理员可以执行以下步骤。

  1. GRANT BINDADD ON DATABASE TO USER <authorization_name>.

  2. 使用 Power Query 连接到 IBM Db2 数据库并检索架构、表和视图的列表。 Power Query IBM Db2 连接器将自动创建包 NULLID.MSCS001,然后将包的执行权限授予公众。

  3. REVOKE BINDADD ON DATABASE FROM USER <authorization_name>.

  4. GRANT EXECUTE ON PACKAGE <collection.package> TO USER <authorization_name>.

连接到 IBM Db2 for i 时,Db2 管理员可以执行以下步骤。

  1. WRKOBJ QSYS/CRTSQLPKG。 键入“2”以更改对象权限。

  2. 将权限从 *EXCLUDE 更改为 PUBLIC 或 <authorization_name>。

  3. 之后,将授权改回 *EXCLUDE。

SQLCODE -360 错误代码

尝试连接到 IBM Db2 数据库时,可能会遇到以下错误:

Microsoft Db2 Client: The host resource could not be found. Check that the Initial Catalog value matches the host resource name. SQLSTATE=HY000 SQLCODE=-360

此错误消息指示没有为数据库名称输入正确的值。

SQLCODE -1336 错误代码

The specified host could not be found.

仔细检查名称,并确认主机可访问。 例如,在命令提示符 中使用 ping,尝试访问服务器并确保 IP 地址正确,或使用 telnet 与服务器通信。

SQLCODE -1037 错误代码

Host is reachable, but is not responding on the specified port.

端口在服务器名称的末尾指定,用冒号分隔。 如果省略,则使用默认值 50000。

若要查找用于 Linux、Unix 和 Windows 的端口 Db2,请运行以下命令:

db2 get dbm cfg | findstr SVCENAME

在输出中查找 SVCENAME(以及用于 TLS 加密连接的 SSL_SVCENAME)的条目。 如果此值为数字,则为端口。 否则,将该值与系统的“服务”表进行交叉引用。 通常可以在 /etc/services 或适用于 Windows 的 c:\windows\system32\drivers\etc\services 中找到此信息。

以下屏幕截图显示了 Linux/Unix 中此命令的输出。

带有 Linux 和 Unix 中 db2 命令输出的图像

以下屏幕截图显示了 Windows 中此命令的输出。

在 Windows 中使用 db2 命令输出 映像

确定数据库名称

若要确定要使用的数据库名称,

  1. 在 IBM i 上,运行 DSPRDBDIRE

    显示关系数据库目录条目的输出的图像

  2. 其中一个条目的“远程位置”将为 *LOCAL。 此条目即要使用的条目。

确定端口号

Microsoft驱动程序使用分布式关系数据库体系结构 (DRDA) 协议连接到数据库。 DRDA 的默认端口为端口 446。 首先尝试此值。

若要查找运行 DRDA 服务的特定端口,请执行以下操作:

  1. 运行 IBM i 命令 WRKSRVTBLE

  2. 向下滚动,直到找到 DRDA 的条目。

    服务表条目

  3. 若要确认 DRDA 服务已启动并侦听该端口,请运行 NETSTAT

    DRDA 侦听

  4. 选择选项 3(对于 IPv4)或选项 6(对于 IPv6)。

  5. 按 F14 查看端口号而不是名称,并滚动直到看到有问题的端口。 它应具有状态为“侦听”的条目。

    IP 连接状态

详细信息