通过db2cli检查DB2数据库的可用性

时间:2014-06-26 14:28:43

标签: shell db2

我尝试通过db2cli - 实用程序检查DB2实例的可用性,如下所示

db2cli execsql -user USER -passwd PASSWD -connstring DATABASE:HOST:PORT

(使用大写文本的实际值)。我希望这可以连接到HOST:PORT,使用凭据USER和PASSWD,并切换到数据库DATABASE。

结果我得到了

SQLError: rc = 0 (SQL_SUCCESS) 
SQLGetDiagRec: SQLState     : 08001
      fNativeError : -1024
      szErrorMsg   : [IBM][CLI Driver] SQL1024N  A database connection does not exist.      SQLSTATE=08003
      cbErrorMsg   : 82

但是:如果我在连接到DB2的应用程序中使用它们作为凭据,那么这些值在同一台计算机上 ,所以我希望我能够获得与给定命令的连接。

我的问题是:我使用db2cli错了吗?

2 个答案:

答案 0 :(得分:0)

您可以尝试验证以下连接(它会确保连接成功)

db2cli validate -dsn sample -connect

db2cli.ini:

[样品]

主机名=宿主

PWD =密码

端口=端口号

PROTOCOL = TCPIP

数据库= DBNAME

UID =用户名

答案 1 :(得分:0)

您使用了错误的连接字符串以及选项。通过运行“ db2cli execsql -help ”命令检查正确的命令语法。

您只能将-user和-passwd选项与-dsn选项一起使用。如果使用连接字符串,则uid和pwd应该是-connstring选项值的一部分。此外,连接字符串的语法是错误的。它必须是一对由分号分隔的关键字和值,并用引号括起来,如“key1 = val1; key2 = val2; key3 = val3”。您应该使用的正确命令是:

db2cli execsql -connstring“DATABASE = dbname; HOSTNAME = hostname; PORT = portnumber; UID = userid; PWD = passwd”

我的输出如下:

$ db2cli execsql -connstring "database=bluemix;hostname=192.168.1.20;port=50000;uid=myuid;pwd=mydbpassword"
IBM DATABASE 2 Interactive CLI Sample Program
(C) COPYRIGHT International Business Machines Corp. 1993,1996 
All Rights Reserved
Licensed Materials - Property of IBM
US Government Users Restricted Rights - Use, duplication or
disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
> select 'bluemix' from sysibm.sysdummy1
select 'bluemix' from sysibm.sysdummy1
FetchAll:  Columns: 1
  1
  bluemix
FetchAll: 1 rows fetched.
> quit

$

要知道实例名称,您应该运行db2level命令。

$ db2level
DB21085I  This instance or install (instance name, where applicable: "bimaljha") uses
"64" bits and DB2 code release "SQL10054" with level identifier "0605010E".
Informational tokens are "DB2 v10.5.0.4", "s140813", "IP23623", and Fix Pack "4".
Product is installed at "/home/bimaljha/sqllib".