IBM IIB 9 多数据源
IBM IIB 9 multiple data sources
我有计算节点的消息流,它正在从数据库调用一些存储过程。我在该节点上为 db1 设置了数据源字段,odbc.ini 文件中存在相同的名称。现在我想动态地(无需重新部署)将数据源更改为 db2。
现在我找到了这两个解决方案,但它们都很丑陋:
- 更改 odbc.ini 中的数据源描述并调用 mqsireload。
为数据库名称和模式声明用户定义的属性,并像这样调用存储过程:
在数据库中调用 SOME_PROC()。{UDP_DBNAME}。{UDP_DBSCHEMA};
然后您可以使用代理 API 在运行时更改此属性,流将立即捕获它。
还有其他选择吗?
根据您的要求,您可以这样做:
- 在
odbc.ini
文件中同时定义 DB1
和 DB2
- 创建两个指向同一个 ESQL 文件的计算节点,但一个的数据源配置为
DB1
,另一个的数据源配置为 DB2
- 设置一个新的计算节点(在前两个节点之前),其中包含确定您要使用哪个节点的逻辑。
Out1
连接到 ComputeNodeDB1
,Out2
连接到 ComputeNodeDB2
。
有了这个解决方案,DB可以在运行时动态确定!
另一种解决方案是使用 PASSTHRU 语句 运行 数据库操作。
在该语句中,您可以指定数据源名称,以便进行名称替换,这意味着它可以采用用户定义的值 属性,而无需停止流.
https://www.ibm.com/support/knowledgecenter/en/SSMKHH_9.0.0/com.ibm.etools.mft.doc/ak05890_.htm
我有计算节点的消息流,它正在从数据库调用一些存储过程。我在该节点上为 db1 设置了数据源字段,odbc.ini 文件中存在相同的名称。现在我想动态地(无需重新部署)将数据源更改为 db2。 现在我找到了这两个解决方案,但它们都很丑陋:
- 更改 odbc.ini 中的数据源描述并调用 mqsireload。
为数据库名称和模式声明用户定义的属性,并像这样调用存储过程:
在数据库中调用 SOME_PROC()。{UDP_DBNAME}。{UDP_DBSCHEMA};
然后您可以使用代理 API 在运行时更改此属性,流将立即捕获它。
还有其他选择吗?
根据您的要求,您可以这样做:
- 在
odbc.ini
文件中同时定义DB1
和DB2
- 创建两个指向同一个 ESQL 文件的计算节点,但一个的数据源配置为
DB1
,另一个的数据源配置为DB2
- 设置一个新的计算节点(在前两个节点之前),其中包含确定您要使用哪个节点的逻辑。
Out1
连接到ComputeNodeDB1
,Out2
连接到ComputeNodeDB2
。
有了这个解决方案,DB可以在运行时动态确定!
另一种解决方案是使用 PASSTHRU 语句 运行 数据库操作。
在该语句中,您可以指定数据源名称,以便进行名称替换,这意味着它可以采用用户定义的值 属性,而无需停止流.
https://www.ibm.com/support/knowledgecenter/en/SSMKHH_9.0.0/com.ibm.etools.mft.doc/ak05890_.htm