DB2 подключиться к удаленной БД без каталога? - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь подключиться к 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, но она предназначена для 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 голосов
/ 01 марта 2019

Вы можете использовать файл конфигурации драйвера IBM Data Server , где вы можете указать свои базы данных без их каталогизации.Существует подробное описание формата и того, как это сделать.
Можно использовать простую оболочку, которая анализирует переданный «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}

Это у вас работает?

0 голосов
/ 01 марта 2019

Вы можете сделать это с CLPPlus , который написан на Java и поэтому использует драйвер JDBC:

clpplus myuser@20.40.20.40:5555/mydb

, но не с традиционным CLP.

...