我尝试通过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
错了吗?
答案 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".