db2 - 在 DB2 db2dsdriver.cfg 文件中定义一个可以访问多个数据库的数据库条目
问题描述
我目前使用 CLI 方法注册一个节点,然后为该节点注册一个数据库(使用 CATALOG NODE / CATALOG DATABASE)来配置我的 DB2 CLI 客户端以访问我们的数据库服务器。
通过数据库的一次注册,我可以有效地注册默认数据库,但是当我使用 SQLDriverConnect 在我的应用程序中连接并使用“DATABASE =”选项时,我可以连接到我的服务器上可用的其他数据库。
我想切换到更易于管理的db2dsdriver.cfg
配置文件,但是我无法将其配置为允许单个访问多个数据库。
一些代码可以帮助澄清。我的 DB2 服务器实例有两个数据库,定义如下:
CREATE DATABASE DB_1 ON /opt/data/DB_1 USING CODESET UTF-8 TERRITORY US COLLATE USING SYSTEM
CREATE DATABASE DB_2 ON /opt/data/DB_2 USING CODESET UTF-8 TERRITORY US COLLATE USING SYSTEM
我使用以下命令向我的客户端 CLI 注册此服务器:
CATALOG TCPIP NODE DB_NODE remote example.server.com server 50000
CATALOG DB DB_1 as DB_1 at node DB_NODE
通过该设置,我可以从我的 CLI 应用程序执行以下操作:
rc = SQLDriverConnect(hdbc, NULL, "DSN=DB_1;UID=dbtest1;PWD=zebco5;DATABASE=DB_1",
SQL_NTS, outStr, 128, &outSize, SQL_DRIVER_NOPROMPT);
或者如果我想使用 DB_2 数据库:
rc = SQLDriverConnect(hdbc, NULL, "DSN=DB_1;UID=dbtest1;PWD=zebco5;DATABASE=DB_2",
SQL_NTS, outStr, 128, &outSize, SQL_DRIVER_NOPROMPT);
注意我不需要更改 DSN,只需更改“DATABASE”连接选项。
最近我找到了db2dsdriver.cfg
我宁愿使用的配置文件。为此,我创建了这个并从 cli 中取消了我的节点和数据库的目录:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<configuration>
<dsncollection>
<dsn alias="DB_1" name="DB_1" host="server.example.com" port="50000"/>
</dsncollection>
<databases>
<database name="DB_1" host="server.example.com" port="50000"/>
<database name="DB_2" host="server.example.com" port="50000"/>
</databases>
</configuration>
我可以用这个连接:
rc = SQLDriverConnect(hdbc, NULL, "DSN=DB_1;UID=dbtest1;PWD=zebco5;DATABASE=DB_1",
SQL_NTS, outStr, 128, &outSize, SQL_DRIVER_NOPROMPT);
很好,但现在使用它连接到 DB_2:
rc = SQLDriverConnect(hdbc, NULL, "DSN=DB_1;UID=dbtest1;PWD=zebco5;DATABASE=DB_2",
SQL_NTS, outStr, 128, &outSize, SQL_DRIVER_NOPROMPT);
导致此错误:
SQL0843N The server name does not specify an existing connection. SQLSTATE=08003
我理解,但似乎是旧节点/数据库注册机制的功能回归。
我正在尝试确定配置文件是否支持我正在使用的功能,我做错了什么,或者它只是不能那样工作?
谢谢您的帮助。
解决方案
推荐阅读
- java - java支持多重继承吗?
- javascript - 天气应用程序:按钮不显示任何数据
- azure - 在 Azure 数据工厂中使用动态参数将自定义属性添加到 SQL DB
- java - 我想限制上传到 Firebase 存储的 pdf 文件大小。我希望该用户可以上传最大大小为 7MB 的文件
- pandas - 从多月列创建新观察
- optimization - 基于目标函数和多/多级约束的整数分类
- debugging - 如何调试 SPDY_PROTOCOL_ERROR?
- mysql - 在不使用 PHP 的情况下将希腊字符插入 MySQL 表列
- python-3.x - Python 在两个类实现之间切换干净的代码
- arduino - 有没有可能的方法来分别显示从串口接收到的不同传感器的数据?