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 格式指定端口,其中 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 格式指定端口,其中 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 驱动程序
- 不支持传输层安全性 (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 驱动程序:
在计算机上打开 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(游标稳定性)包(名称 = 用户登录名)。
如果没有绑定包权限,则需要向 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,然后将包执行授权为 pubic。
使用以下一个命令撤销将新包绑定到用户的权限:
- 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,然后将包执行授权为 pubic。
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。
要查找 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 中此命令的输出。
以下屏幕截图显示了 Windows 中此命令的输出。
确定数据库名称
要确定要使用的数据库名称:
在 IBM i 上,运行
DSPRDBDIRE
。其中一个条目将具有 *LOCAL 的远程位置。 此条目是要使用的条目。
确定端口号
Microsoft 驱动程序使用分布式关系数据库体系结构 (DRDA) 协议连接到数据库。 DRDA 的默认端口为端口 446。 首先尝试此值。
要查找运行 DRDA 服务的特定端口:
运行 IBM i 命令
WRKSRVTBLE
。向下滚动,直到找到 DRDA 的条目。
要确认 DRDA 服务已启动并在侦听该端口,请运行
NETSTAT
。选择选项 3(对于 IPv4)或选项 6(对于 IPv6)。
按 F14 查看端口号而不是名称,并滚动直到看到相关端口。 它应具有状态为“侦听”的条目。