2

我有计算节点的消息流,它从数据库调用一些存储过程。我在这个节点上为 db1 设置了数据源字段,在 odbc.ini 文件中存在相同的名称。现在我想动态(无需重新部署)将数据源更改为 db2。现在我已经找到了这两种解决方案,但它们都很丑:

  1. 更改 odbc.ini 中的数据源描述并调用 mqsireload。
  2. 为数据库名称和模式声明用户定义的属性,并像这样调用存储过程:

    CALL SOME_PROC() IN DATABASE.{UDP_DBNAME}.{UDP_DBSCHEMA};

然后,您可以使用代理 API 在运行时更改此属性,流将立即捕获它。

还有其他选择吗?

4

2 回答 2

3

根据您的要求,您可以执行以下操作:

  1. 在您的文件中定义DB1DB2odbc.ini
  2. 创建两个指向同一个 ESQL 文件的计算节点,但一个配置了数据源,DB1另一个配置了DB2
  3. 设置一个新的计算节点(在前两个之前),其中包含确定要使用哪一个的逻辑。Out1连接到ComputeNodeDB1并且Out2连接到ComputeNodeDB2

使用此解决方案,可以在运行期间动态确定 DB!

于 2017-01-25T06:32:59.733 回答
0

另一种解决方案可能是使用 PASSTHRU 语句来运行数据库操作。

在该语句中,您可以指定数据源名称,以便对其进行名称替换,这意味着它可以采用用户定义的属性的值,进而可以在不停止流的情况下对其进行修改。

https://www.ibm.com/support/knowledgecenter/en/SSMKHH_9.0.0/com.ibm.etools.mft.doc/ak05890_.htm

于 2017-01-25T17:17:00.053 回答