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 中使用的驱动程序相同,称为“db2 ADO.NET 提供程序”。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 Package 连接 配置中指定的其他集合中未找到该包。 也可能遇到常见的 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. 使用以下命令之一向用户授予绑定新包的权限:

    • 授予系统上的 BINDADD 给 <authorization_name>
    • 将 < 上的 PACKADM 权限授予给 authorization_name
  2. 使用 Power Query 连接到 IBM Db2 数据库并检索架构、表和视图的列表。 Power Query IBM Db2 数据库连接器自动创建程序包 NULLID.MSCS001,然后向公众授予程序包的执行权限。

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

    • 撤消 BINDADD 从<authorization_name>
    • 在<collection_name>上撤消<从authorization_name>的PACKADM权限

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

  1. 授予用户 <authorization_name> 对数据库上 BINDADD 的权限。

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

  3. 撤消用户 <authorization_name> 在数据库上的 BINDADD 权限。

  4. 给予 EXECUTE ON PACKAGE <collection.package> 给 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 或 c:\windows\system32\drivers\etc\services for Windows 中找到此表。

以下屏幕截图显示了 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 的条目。

    屏幕截图显示服务表条目以及 DRDA 条目。

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

    要选择的 NETSTAT 选项的屏幕截图。

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

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

    显示“侦听”状态的 IPv4 连接状态的屏幕截图。