DB2连接到没有目录的远程数据库?

DB2连接到没有目录的远程数据库?,db2,database-connection,db2-luw,Db2,Database Connection,Db2 Luw,我正在尝试连接到DB2LUW。我知道,如果我对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 但是,如果我可能需要连接到各种数据库,这是否

我正在尝试连接到DB2LUW。我知道,如果我对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
但是,如果我可能需要连接到各种数据库,这是否意味着每次涉及新数据库时,我都必须进行编目过程?或者有没有一种没有它的连接方式?我确实在IBMKB中找到了这篇文章,但它是针对DB2z/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   
SQL0104N在“TO”之后发现意外标记“20.40.20.40:5555/mydb”。预期的令牌可能包括:“”。SQLSTATE=42601
您可以这样做,它是用Java编写的,因此使用JDBC驱动程序:

clpplus myuser@20.40.20.40:5555/mydb
但与传统CLP不同。

您可以使用,在那里您可以指定数据库而无需对其进行编目。有一个关于格式和如何执行的详细说明。
可以使用一个简单的包装器来解析传递的“URL”,并动态生成这样的配置文件。
我们必须在
点空间文件名
模式中调用它

#!/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}
#/垃圾箱/垃圾箱
如果[$#-eq 0];然后
echo“用法:../db2connect主机:端口/dbname用户用户名[使用密码]”>&2
出口1
fi
DSN=${1}
CFGFILE=./db2dsdriver.cfg$$
dbname=${DSN#*/}
hp=${DSN%/*}
主机=${hp%:*}
端口=${hp}*:}

cat>${CFGFILE}这不就是另一个名称的目录操作的一种形式吗?它取决于您如何解释
目录操作
术语。DB2文档将该命令描述为在系统目录中注册数据库。我们不使用db2dsdriver.cfg文件接触系统目录。不幸的是,DB2 CLP不能像CLI应用程序那样使用带有function.agreted的DSN连接。最初的问题没有提出任何动机,但建议是避免在连接之前进行先前的配置,我们知道这对于CLP是不可能的,但是通过jdbc使用CLPPlus是可能的。