DB2是否连接到没有目录的远程DB?

时间:2019-02-28 21:54:36

标签: db2 database-connection db2-luw

我正在尝试连接到DB2 LUW。我知道,如果我对tcpip节点和数据库进行编录,则可以连接到数据库。示例:

db2 catalog tcpip node mynode remote 20.40.20.40 server 5555
db2 catalog database mydb as mydb at node mynode
db2 terminate
db2 connect to mydb user myuser using mypassword

但是,如果可能要求我连接到各个数据库,这是否意味着我必须在每次涉及新数据库时都要进行目录编制过程?还是有没有它的连接方式?我确实从IBM KB找到了this文章,但这是针对DB2 z / OS的。目前,如果我尝试以下语法:

db2 connect to 20.40.20.40:5555/mydb user myuser using mypassword

我得到一个错误:

SQL0104N  An unexpected token "20.40.20.40:5555/mydb" was found following "TO".  Expected tokens may include:  "<database-alias>".  SQLSTATE=42601   

2 个答案:

答案 0 :(得分:1)

您可以执行with CLPPlus,它是用Java编写的,因此使用JDBC驱动程序:

clpplus myuser@20.40.20.40:5555/mydb

但不是传统的CLP。

答案 1 :(得分:1)

您可以使用IBM data server driver configuration file,在其中您可以指定数据库而无需对它们进行分类。有关格式以及如何执行的详细说明。
可以使用一个简单的包装程序,该程序分析传递的“ URL”并即时生成这样的配置文件。
我们必须以dot space filename模式调用它。

#!/bin/sh

if [ $# -eq 0 ]; then
  echo "Usage: . ./db2connect host:port/dbname USER username [USING password]" >&2
  exit 1
fi

DSN=${1}
CFGFILE=./db2dsdriver.cfg.$$
dbname=${DSN#*/}
hp=${DSN%/*}
host=${hp%:*}
port=${hp#*:}

cat > ${CFGFILE} <<EOF
<configuration>
  <dsncollection>
    <dsn alias="${dbname}" name="${dbname}" host="${host}" port="${port}"/>
  </dsncollection>
  <databases>
    <database name="${dbname}" host="${host}" port="${port}"/>
  </databases>
</configuration>
EOF

cfg_bkp=${DB2DSDRIVER_CFG_PATH}
export DB2DSDRIVER_CFG_PATH=${CFGFILE}
shift
db2 connect to ${dbname} "$@"
export DB2DSDRIVER_CFG_PATH=${cfg_bkp}
rm -f ${CFGFILE}

它对您有用吗?