DB2连接到没有目录的远程数据库?
我正在尝试连接到DB2LUW。我知道,如果我对tcpip节点和数据库进行编目,我将能够连接到数据库。例如: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 但是,如果我可能需要连接到各种数据库,这是否
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是可能的。