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 数据库
若要建立连接,请执行以下步骤:
从“获取数据”中选择“IBM Db2 数据库”选项。
在“服务器”中指定要连接的 IBM Db2 服务器。 如果需要端口,请使用 ServerName:Port格式指定端口,其中 端口 为端口号。 此外,在 数据库中输入要访问的 IBM Db2 数据库。 在此示例中,服务器名称和端口为
TestIBMDb2server.contoso.com:4000
,访问的 IBM Db2 数据库为NORTHWD2
。如果您从 Power BI Desktop 进行连接,请选择 导入 或 DirectQuery 数据连接模式。 这些示例步骤的其余部分使用导入数据连接模式。 若要了解有关 DirectQuery 的详细信息,请转到 在 Power BI Desktop中使用 DirectQuery。
注意
默认情况下,IBM Db2 数据库对话框在登录期间使用Microsoft驱动程序。 如果要使用 IBM 驱动程序,请打开 高级选项 并选择 IBM。 详细信息:通过高级选项进行连接
如果选择 DirectQuery 作为数据连接模式,则会禁用高级选项中的 SQL 语句。 DirectQuery 目前不支持在 IBM Db2 连接器的本机数据库查询之上进行查询下推。
选择“确定”。
如果这是你第一次连接到此 IBM Db2 数据库,请选择要使用的身份验证类型,输入凭据,然后选择 连接。 有关身份验证的详细信息,请转到使用数据源进行身份验证。
默认情况下,Power Query 会尝试使用加密连接连接到 IBM Db2 数据库。 如果 Power Query 无法使用加密连接进行连接,将显示“无法连接”对话框。 若要使用未加密的连接进行连接,请选择“确定”。
在 导航器中,选择所需的数据,然后选择 加载 以加载数据或 转换数据 来转换数据。
中选择所需的数据
从 Power Query Online 连接到 IBM Db2 数据库
若要建立连接,请执行以下步骤:
在“Power Query - 连接到数据源”页中选择“IBM Db2 数据库”选项。
在“服务器”中指定要连接的 IBM Db2 服务器。 如果需要端口,请使用 ServerName:Port格式指定端口,其中 端口 为端口号。 此外,在 数据库中输入要访问的 IBM Db2 数据库。 在此示例中,服务器名称和端口为
TestIBMDb2server.contoso.com:4000
,所访问的 IBM Db2 数据库是NORTHWD2
。选择本地数据网关的名称。
注意
必须为此连接器选择本地数据网关,无论 IBM Db2 数据库位于本地网络还是在线上。
如果这是您首次连接到此 IBM Db2 数据库,在 身份验证类型中选择连接所需的凭据类型。 如果计划使用在 IBM Db2 数据库中创建的帐户而不是 Windows 身份验证,请选择 基本。
输入凭据。
如果要使用加密连接,请选择“使用加密连接;如果要使用未加密的连接,请清除该选项。
选择“下一步”继续。
在“导航器”中,选择所需的数据,然后选择“转换数据”在 Power Query 编辑器中转换数据。
中转换的数据
使用高级选项进行连接
Power Query 提供了一组高级选项,可根据需要添加到查询。
下表列出了可在 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 驱动程序,请执行以下操作:
在计算机上打开 Windows PowerShell。
输入以下命令:
[System.Data.Common.DbProviderFactories]::GetFactoryClasses() | ogv
在打开的对话框中,应在 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 管理员可以执行以下步骤。
使用以下命令之一向用户授予绑定新包的权限:
- GRANT BINDADD ON SYSTEM TO <authorization_name>
- GRANT PACKADM ON <collection_name> TO <authorization_name>
使用 Power Query 连接到 IBM Db2 数据库并检索架构、表和视图的列表。 Power Query IBM Db2 数据库连接器将自动创建包 NULLID.MSCS001,然后将包的执行权限授予给公共用户。
使用以下命令之一撤销将新包绑定到用户的授权:
- REVOKE BINDADD FROM <authorization_name>
- REVOKE PACKADM ON <collection_name> FROM <authorization_name>
连接到 IBM Db2 for Linux、Unix 或 Windows 时,Db2 管理员可以执行以下步骤。
GRANT BINDADD ON DATABASE TO USER <authorization_name>.
使用 Power Query 连接到 IBM Db2 数据库并检索架构、表和视图的列表。 Power Query IBM Db2 连接器将自动创建包 NULLID.MSCS001,然后将包的执行权限授予公众。
REVOKE BINDADD ON DATABASE FROM USER <authorization_name>.
GRANT EXECUTE ON PACKAGE <collection.package> TO USER <authorization_name>.
连接到 IBM Db2 for i 时,Db2 管理员可以执行以下步骤。
WRKOBJ QSYS/CRTSQLPKG。 键入“2”以更改对象权限。
将权限从 *EXCLUDE 更改为 PUBLIC 或 <authorization_name>。
之后,将授权改回 *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 中此命令的输出。
以下屏幕截图显示了 Windows 中此命令的输出。
在 Windows 中使用 db2 命令输出
确定数据库名称
若要确定要使用的数据库名称,
在 IBM i 上,运行
DSPRDBDIRE
。其中一个条目的“远程位置”将为 *LOCAL。 此条目即要使用的条目。
确定端口号
Microsoft驱动程序使用分布式关系数据库体系结构 (DRDA) 协议连接到数据库。 DRDA 的默认端口为端口 446。 首先尝试此值。
若要查找运行 DRDA 服务的特定端口,请执行以下操作:
运行 IBM i 命令
WRKSRVTBLE
。向下滚动,直到找到 DRDA 的条目。
若要确认 DRDA 服务已启动并侦听该端口,请运行
NETSTAT
。选择选项 3(对于 IPv4)或选项 6(对于 IPv6)。
按 F14 查看端口号而不是名称,并滚动直到看到有问题的端口。 它应具有状态为“侦听”的条目。