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 格式指定端口,其中 Port 是端口号。 此外,在数据库中输入要访问的 IBM Db2 数据库。 在此示例中,服务器名称和端口是 TestIBMDb2server.contoso.com:4000,要访问的 IBM Db2 数据库是 NORTHWD2

    Enter IBM Db2 database connection.

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

    注意

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

    如果选择 DirectQuery 作为数据连接模式,将禁用高级选项中的 SQL 语句。 DirectQuery 目前不支持在 IBM Db2 连接器的本机数据库查询顶部向下推送查询。

  4. 选择“确定”

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

    Enter your IBM Db2 database credentials.

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

    Unable to connect dialog box

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

    Select the data you require from the database

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

请执行以下步骤来建立连接:

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

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

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

    注意

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

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

  5. 输入凭据。

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

    Enter IBM Db2 database online connection.

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

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

    Select the data you want to transform in the Navigator

使用高级选项进行连接

Power Query 提供一组高级选项,可以根据需要将这些选项添加到查询中。

Advanced options included in the IBM Db2 database connection dialog box.

下表列出了可以在 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 驱动程序
    • 不支持传输层安全性 (TLS)
  • IBM 驱动程序
    • 使用适用于 .NET 的 IBM Db2 驱动程序时,IBM Db2 数据库连接器不适用于 Mainframe 或 IBM i 系统
    • 不支持 DirectQuery

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

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(游标稳定性)包(名称 = 用户登录名)。

如果没有绑定包权限,则需要向 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,然后将包执行授权为 pubic。

  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,然后将包执行授权为 pubic。

  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。

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

db2 get dbm cfg | findstr SVCENAME

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

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

Image with output of the db2 command in Linux and Unix

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

Image with output of the db2 command in Windows

确定数据库名称

要确定要使用的数据库名称:

  1. 在 IBM i 上,运行 DSPRDBDIRE

    Image showing the output of the Display Relational Database Directory Entries

  2. 其中一个条目将具有 *LOCAL远程位置。 此条目是要使用的条目。

确定端口号

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

要查找运行 DRDA 服务的特定端口:

  1. 运行 IBM i 命令 WRKSRVTBLE

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

    Service Table Entries

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

    DRDA listening

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

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

    IP connection status

详细信息