我正在尝试连接到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
答案 0 :(得分:1)
答案 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}
它对您有用吗?