DB2连接到远程数据库而不使用目录?

ct2axkht  于 7个月前  发布在  DB2
关注(0)|答案(3)|浏览(76)

我正在尝试连接到DB2 LUW。我知道如果我对tcpip节点和数据库进行编目,我将能够连接到DB。示例:

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

flmtquvp

flmtquvp1#

你可以这样做with CLPPlus,它是用Java编写的,因此使用JDBC驱动程序:

clpplus [email protected]:5555/mydb

字符串
而不是传统的CLP。

a5g8bdjr

a5g8bdjr2#

你可以使用IBM data server driver configuration file,在这里你可以指定你的数据库而不编目。有关于格式和如何做的详细描述。
可以使用一个简单的 Package 器,它解析传递的“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}

字符串
对你有用吗?

frebpwbc

frebpwbc3#

一旦你创建了目录,那么甚至不需要传递IP地址和端口详细信息,它将很容易地连接到该数据库(只是使数据库的别名),只有在你已经像下面的步骤目录。

  1. db2 catalog TCPIP节点mynode remote XX. XX.XX.XX server 50000 --> Normal step。
  2. db2目录数据库mydatabase作为节点mynode上的AKUMAR--> AKUMAR是mydatabase的别名
  3. db2 connect to akumar user userid using pwd它将只连接到提供了dbIP(XX. XX. XX.XX)的远程数据库

相关问题